Приём загрузки изображений в платной Форме
Вопрос типа «Файл» принимает JPEG, PNG, WebP и GIF на платном тарифе и проверяется даже при выключенном строгом режиме. Объявите его, ограничьте число файлов настройками Формы и объясните приватное хранение и подписанные ссылки.
Эта статья переведена машинным способом. Читать оригинал на английском

Вопрос типа «Файл» — единственная часть Формы, которая принимает байты, а не текст. На платном тарифе он принимает растровые изображения: JPEG, PNG, WebP и GIF. Этот урок объявляет такое поле, задаёт его границы и объясняет, что происходит с файлом после того, как человек, заполняющий Форму, нажмёт «Отправить». Он всё время остаётся внутри границы изображений, потому что именно эту границу описывает документация функции.
Что принимает вопрос типа «Файл»
Список форматов — это список разрешённого, а не подсказка. Если формат не назван, вопрос типа «Файл» принимает те четыре растровых изображения. SVG отсутствует намеренно: SVG — это скрипт, который отображается как картинка, и отдача его обратно во входящие превратила бы Форму в хостинг скриптов. Это поле не свалка архивов: ни ZIP, ни пакетов. Форма без вопроса типа «Файл» отклоняет любую multipart-загрузку, так что поле — ещё и выключатель, который включает загрузки.
JPEG — фотографии и снимки с телефона.
PNG — скриншоты и изображения с прозрачностью.
WebP — та же картинка меньшим числом байтов.
GIF — короткие циклы и простая графика.
Объявите поле, затем ограничьте его
Добавьте вопрос, выберите тип «Файл» и оставьте допустимые форматы на четырёх изображениях. Затем задайте, сколько файлов примет вопрос. Настройка принадлежит вопросу, поэтому одна Форма может просить одну фотографию профиля, а ниже — несколько скриншотов.
Настройка | Что выбрать | Почему это важно |
|---|---|---|
Тип | Файл | Объявляет поле, и именно поэтому оно решающее при приёме. |
Допустимые форматы | JPEG, PNG, WebP, GIF | Всё вне списка отклоняется, а не преобразуется. |
Максимум файлов | Задают настройки Формы | Число файлов ограничено настройками Формы. |
Обязательное | Включено или выключено | Обязательное превращает пустую загрузку в отказ. |
Решающее даже при выключенном строгом режиме
Строгий режим — решение каждой Формы. Оставьте его выключенным, и схема советует; включите, и схема решает. Вопрос типа «Файл» этого решения не ждёт. Объявленный вопрос типа «Файл» проверяется при каждой Отправке — размер, тип и содержимое — и отклоняет, а не обрезает. Это сделано намеренно: файл — единственный ответ, который стоит места и может нести код.
Поэтому неверный файл отклоняется даже в мягкой Форме. Человеку сообщают, а попытка сохраняется как отклонённая Отправка, которую можно рассмотреть. Любое другое поле этой Формы может оставаться совещательным; файл — нет.
Куда попадает файл и кто может его открыть
Загруженный файл — часть содержимого Отправки, а не публичный ресурс. Он хранится приватно и читается по подписанной ссылке с истечением срока. Публичного адреса, который можно угадать, нет, и скопированная ссылка не становится постоянной дверью к чьим-то фотографиям.
Проверьте один раз на настоящем файле
Отправьте Форму один раз с JPEG, снятым на телефон, один раз с PNG-скриншотом и один раз с чем-то вне списка. Первые два должны прийти вместе с Отправкой; третий должен быть отклонён с причиной. Этот пятиминутный проход ловит обычные ошибки: поле, которое никто не отметил обязательным, число, оставшееся единицей, когда страница просит три фотографии, или подпись, обещающая формат, которого поле не принимает.
Затем откройте одно сохранённое изображение из Отправки. Если подписанная ссылка работает, пока вы вошли в систему, а тот же файл недоступен по обычному публичному адресу, хранилище ведёт себя так, как описано.
Что сказать человеку, заполняющему Форму
Назовите в подписи формат и количество, а не только слово «Загрузить»: «До трёх фотографий (JPEG, PNG, WebP или GIF)». Человек читает подпись до выбора файла, и верная подсказка лучше отказа после.
Скажите и о том, что произойдёт с файлом. Тот, кто передаёт фотографию, вправе знать, что она хранится приватно и открывается по ссылке, а не публикуется на странице.
Форма запроса multipart-Отправки, включая часть с файлом, описана в справочнике API. Загрузки появились в первом Выпуске — v1.0.0 в Списке изменений перечисляет их рядом с экспортом и сводками ответов.