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

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

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

Диагностика

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

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

01

Поле выбора

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

02

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

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

03

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

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

04

Сохранение

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

05

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

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

06

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

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

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

Проверяем путь от выбора файла до сохранённой записи

Для воспроизведения используем обезличенный документ с согласованными параметрами. Уточняем, когда посетитель видит отказ: при выборе, во время передачи или после завершения. Фиксируем, какая система принимает файл и кто должен получить доступ к нему после отправки.

01

Несколько файлов

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

02

Файл без связанной заявки

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

03

Авторизация и права

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

04

Мобильное соединение

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

Контроль вложений

Сверяем результат на обеих сторонах формы

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

Достаточно увидеть сообщение об успехе?

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

Какие примеры нужны для приёмки?

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

Результат

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

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

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

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

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

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

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

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

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

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

01

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

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

02

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

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

03

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

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

04

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

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

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

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

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

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

Вопросы

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

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

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

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

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

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

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

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

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

Первый шаг

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

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