Если клиент не может приложить фотографии к заявке на возврат, поддержка получает неполные обращения, возврат затягивается, а клиенту приходится писать повторно.
Нужно проверить весь путь файла: выбор на устройстве, frontend-валидация, отправка формы, лимиты сервера, сохранение в uploads и привязка фото к заявке.
Коротко: что сделать
- Проверить загрузку фото с телефона и компьютера
- Проверить лимиты размера файла и количества фото
- Проверить MIME-типы и расширения
- Проверить права папки uploads
- Проверить, привязываются ли файлы к заявке возврата
Основные причины
У проблемы может быть несколько уровней: интерфейс, backend, права, внешняя интеграция, кэш, очередь задач или настройки сервера. Поэтому лучше не гадать, а пройти цепочку от действия пользователя до записи в логах и базе.
- Размер фото с телефона превышает лимит PHP или nginx
- Форма принимает только часть MIME-типов
- Ajax-загрузка падает без сообщения
- Папка uploads недоступна для записи
- Заявка создается, но файлы не связываются с ее ID
Пошаговая диагностика
Диагностику удобнее вести на одном воспроизводимом примере: один пользователь, один заказ, один запрос, один файл или одно событие. Так проще отделить реальную причину от случайных совпадений.
- Открыть Network при отправке фото
- Проверить error_log на upload_max_filesize и post_max_size
- Проверить сохранение файла в директории
- Проверить запись файла в базе
- Проверить мобильный Safari и Android Chrome отдельно
Как исправить проблему
Исправление должно закрывать первопричину. Если затронуты платежи, доступы, персональные данные, уведомления или рабочие заказы, сначала проверьте решение на тестовом сценарии и сохраните возможность отката.
- Увеличить разумные лимиты загрузки
- Добавить сжатие изображений на клиенте или сервере
- Разрешить корректные MIME-типы фото
- Исправить права uploads и временной папки
- Добавить понятное сообщение об ошибке загрузки
Безопасный план решения
Не разрешайте любые файлы без проверки. Фото возврата должны проходить проверку типа, размера и имени, а храниться отдельно от исполняемого кода.
Чего не стоит делать
- Не принимать произвольные файлы как изображения
- Не показывать пользователю техническую 500 ошибку
- Не хранить загруженные файлы в папке с PHP-кодом
- Не терять заявку, если одно фото не загрузилось
Что подготовить перед исправлением
- URL формы возврата
- Пример фото и его размер
- Скрин ошибки клиента
- Настройки PHP/nginx лимитов
- Где хранятся файлы заявки
FAQ
Почему с компьютера фото грузится, а с телефона нет?
Телефон может делать большие HEIC/JPEG файлы, а мобильный браузер иначе отправляет MIME и размер.
Нужно ли сжимать фото?
Часто да. Это снижает ошибки загрузки и экономит место, но качество должно хватать для проверки возврата.
Что делать, если часть фото загрузилась?
Форма должна сохранить заявку и показать, какие файлы не прошли, чтобы клиент мог повторить загрузку.
Когда стоит обратиться за помощью
Обращаться стоит, если возвраты идут регулярно и фото нужны для проверки товара, спора или логистики.
Итог
Проверьте лимиты, MIME, uploads, ajax и привязку файлов к заявке. Если нужно починить загрузку фото для возвратов, пишите в Telegram @rabotator_support.