Форма и сервер

Не загружается файл на сайт

Прослеживаем путь файла от выбора в браузере до сохранения на сервере или в облаке. Находим конкретное ограничение и возвращаем пользователю понятный результат загрузки.

Диагностика

На каком этапе
теряется файл

Одинаковая надпись «не удалось загрузить» может скрывать проверку формы, отказ прокси, ошибку приложения или недоступное хранилище. Мы фиксируем сетевой запрос и ответ каждого звена.

01

Поле выбора

Проверяем accept, multiple, обязательность поля, мобильную камеру и передачу формы как multipart/form-data.

02

Размер запроса

Сверяем ограничения браузера, прокси, веб-сервера, PHP или приложения. Отдельно проверяем тайм-аут на медленном соединении.

03

Тип содержимого

Сопоставляем расширение, MIME-тип и реальное содержимое. Не полагаемся только на имя файла.

04

Сохранение

Проверяем временный каталог, свободное место, права записи, имя файла и запись связи в базе данных.

05

Внешнее хранилище

Смотрим срок действия ссылки, ключ доступа, CORS, ответ API и завершение многочастной загрузки.

06

Сообщение пользователю

Разделяем загрузку, проверку, успех и ошибку. Пользователь видит допустимый формат и предел до отправки.

Результат

Файл проходит проверку и сохраняется там, где его ждут

Ограничения согласованы

Форма и сервер используют совместимые пределы размера и перечень типов.

Сохранение подтверждается

Успех показывается после записи файла и связанной записи, а не сразу после выбора.

Отказ понятен

Сообщение называет исправимую причину без раскрытия пути сервера и других технических данных.

Порядок работ

Проверяем хорошие и плохие сценарии

Нужны URL формы, пример допустимого файла и точный текст ошибки. Конфиденциальный документ не требуется: для теста подойдёт безопасный файл того же типа и размера.

01

Повторяем сбой

Фиксируем устройство, формат, размер, время ответа и состояние интерфейса.

02

Находим предел

Проверяем форму, сетевой ответ, журналы приложения и запись в хранилище.

03

Исправляем правило

Меняем только подтверждённый лимит, обработчик или права, сохраняя защитные проверки.

04

Тестируем границы

Отправляем допустимый файл, файл на пределе, запрещённый тип и повторный запрос.

Документация MDN для поля загрузки файла описывает выбор типов и работу атрибута accept. Сервер всё равно должен проверить файл самостоятельно: браузерное ограничение не заменяет защиту обработчика.

Границы работ

Лимит нельзя увеличивать без оценки ресурсов

Большие загрузки расходуют память, место и время обработки. Перед изменением лимита оцениваем назначение формы и возможности тарифа. Если файл принимает CRM, облако или сторонний модуль, потребуется тестовый доступ и журнал этого сервиса. Мы не отключаем проверку типа, антивирусную обработку и авторизацию ради прохождения одного примера. Повреждённый исходный файл также нужно заменить: настройка сайта не исправит его содержимое.

Вопросы

Перед исправлением

Почему маленький файл загружается, а большой нет?

У формы, прокси, сервера, приложения и хранилища могут быть разные лимиты. Срабатывает самое строгое ограничение.

Почему PDF не принимается?

Проверяем список разрешённых типов, MIME-тип, реальное содержимое, имя файла и правила защитного модуля.

Можно разрешить все расширения?

Такой вариант повышает риск. Разрешаем только нужные типы и храним загрузки так, чтобы сервер не исполнял их как код.

Как подтвердить исправление?

Проверяем допустимые и запрещённые файлы, граничные размеры, мобильную загрузку, сохранение и повторную отправку.

Первый шаг

Пришлите адрес формы и параметры файла

Укажите тип, примерный размер, устройство и сообщение сайта. Сам файл с личными или рабочими данными присылать не нужно.