Поле выбора
Проверяем accept, multiple, обязательность поля, мобильную камеру и передачу формы как multipart/form-data.
Форма и сервер
Прослеживаем путь файла от выбора в браузере до сохранения на сервере или в облаке. Находим конкретное ограничение и возвращаем пользователю понятный результат загрузки.
Диагностика
Одинаковая надпись «не удалось загрузить» может скрывать проверку формы, отказ прокси, ошибку приложения или недоступное хранилище. Мы фиксируем сетевой запрос и ответ каждого звена.
Проверяем accept, multiple, обязательность поля, мобильную камеру и передачу формы как multipart/form-data.
Сверяем ограничения браузера, прокси, веб-сервера, PHP или приложения. Отдельно проверяем тайм-аут на медленном соединении.
Сопоставляем расширение, MIME-тип и реальное содержимое. Не полагаемся только на имя файла.
Проверяем временный каталог, свободное место, права записи, имя файла и запись связи в базе данных.
Смотрим срок действия ссылки, ключ доступа, CORS, ответ API и завершение многочастной загрузки.
Разделяем загрузку, проверку, успех и ошибку. Пользователь видит допустимый формат и предел до отправки.
Результат
Форма и сервер используют совместимые пределы размера и перечень типов.
Успех показывается после записи файла и связанной записи, а не сразу после выбора.
Сообщение называет исправимую причину без раскрытия пути сервера и других технических данных.
Порядок работ
Нужны URL формы, пример допустимого файла и точный текст ошибки. Конфиденциальный документ не требуется: для теста подойдёт безопасный файл того же типа и размера.
Фиксируем устройство, формат, размер, время ответа и состояние интерфейса.
Проверяем форму, сетевой ответ, журналы приложения и запись в хранилище.
Меняем только подтверждённый лимит, обработчик или права, сохраняя защитные проверки.
Отправляем допустимый файл, файл на пределе, запрещённый тип и повторный запрос.
Документация MDN для поля загрузки файла описывает выбор типов и работу атрибута accept. Сервер всё равно должен проверить файл самостоятельно: браузерное ограничение не заменяет защиту обработчика.
Границы работ
Большие загрузки расходуют память, место и время обработки. Перед изменением лимита оцениваем назначение формы и возможности тарифа. Если файл принимает CRM, облако или сторонний модуль, потребуется тестовый доступ и журнал этого сервиса. Мы не отключаем проверку типа, антивирусную обработку и авторизацию ради прохождения одного примера. Повреждённый исходный файл также нужно заменить: настройка сайта не исправит его содержимое.
Вопросы
У формы, прокси, сервера, приложения и хранилища могут быть разные лимиты. Срабатывает самое строгое ограничение.
Проверяем список разрешённых типов, MIME-тип, реальное содержимое, имя файла и правила защитного модуля.
Такой вариант повышает риск. Разрешаем только нужные типы и храним загрузки так, чтобы сервер не исполнял их как код.
Проверяем допустимые и запрещённые файлы, граничные размеры, мобильную загрузку, сохранение и повторную отправку.
Первый шаг
Укажите тип, примерный размер, устройство и сообщение сайта. Сам файл с личными или рабочими данными присылать не нужно.