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

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

Коротко: нужно проверить форму, массив файлов на backend, лимиты сервера, права на папки и обработку ошибок.

Почему это ломается

Мультизагрузка ломается из-за отсутствия атрибута multiple, неправильного имени поля, обработки только первого файла, превышения post_max_size, запрета расширений, ошибки временной папки или прав на каталог uploads.

Что проверяю в первую очередь

  • есть ли в форме enctype multipart/form-data и multiple
  • как приходит массив файлов на backend
  • не превышены ли лимиты PHP и веб-сервера
  • есть ли права на папку сохранения
  • показывает ли сайт пользователю конкретную ошибку

Как я это чиню

Я проверяю загрузку от браузера до конечной папки: выбор файлов, отправка POST, структура $_FILES, валидация, сохранение и запись ссылок в базу.

  • исправляю HTML-форму и JavaScript отправки
  • переписываю обработку массива файлов
  • настраиваю лимиты upload_max_filesize, post_max_size и max_file_uploads
  • добавляю понятные ошибки по каждому файлу
  • проверяю безопасность расширений и имен файлов

Что подготовить перед обращением

  • страницу с формой
  • пример файлов и их размер
  • что должно происходить после загрузки
  • текст ошибки или скриншот
  • доступ к серверу или коду обработчика

Как выглядит нормальный результат

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

Чего лучше не делать

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

Вопросы и ответы

Почему загружается только первый файл?

Часто backend читает только один элемент массива или поле формы названо без квадратных скобок.

Почему большие файлы просто исчезают?

При превышении post_max_size PHP может не передать данные в обработчик, поэтому нужна проверка лимитов и ошибок.

Можно ли добавить прогресс загрузки?

Да, если форма отправляется через JavaScript или используется отдельный загрузчик.

Нужно ли хранить оригинальные имена файлов?

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

Нужна похожая задача?

Напишите в Telegram @rabotator_support или оставьте заявку на сайте. Коротко опишите проблему, приложите ссылку, скриншот или лог ошибки, и я подскажу, с чего безопасно начать исправление.

Итог

Мультизагрузка требует согласованной работы формы, backend и сервера. Если один слой обрабатывает только один файл или молча режет размер, загрузка будет казаться случайно сломанной.