Сайт доски объявлений (Тамаранга v2
Окружение rocky linux8 php 7,2 nginx 1,28,2 mysql 8,00,44 Yi 1 bootstrap 3,3,7 vps 8 потоков ,24 озу,2000nyme
Внедрить в JS-загрузчик фото перехват события выбора файлов (change на input[type=file] или хук AJAX-загрузчика).Если пользователь загружает формат HEIC / HEIF (с iPhone), конвертировать его на стороне клиента в JPEG с помощью библиотеки heic2any.Дополнительно: Если пользователь загружает тяжелые PNG, WebP или JPEG (более 3-5 МБ), пережимать их через HTML5 Canvas до максимального разрешения 1920px по широкой стороне и качества quality: 0.85 в формате JPEG.Реализовать последовательную обработку (очередь), чтобы при одновременном выборе нескольких фото браузер не зависал.На выходе в AJAX-запрос вместо исходных файлов должен подставляться сгенерированный Blob (JPEG).Результат: Движок сайта должен без ошибок принимать пережатые JPEG файлы, как если бы они изначально были загружены в этом формате. Код самого PHP-движка трогать нельзя
Пусть фрилансер сначала создаст на своем компьютере или тестовом хостинге обычную пустую HTML-страницу с этой формой загрузки
После успешного теста изолированного скрипта разрешаем переносить код в шаблон Тамаранги
: Сайт должен успешно принимать форматы HEIC, WebP, AVIF, JFIF, TIFF, BMP. Скрипт должен проверять расширение или MIME-тип входящего файла. Если формат отличается от стандартного JPEG/JPG, скрипт должен автоматически переконвертировать его в JPEG на стороне клиента (в браузере) и только потом отправить AJAX-запрос на сервер
Реализовать клиентскую конвертацию любых сторонних форматов изображений в стандартный JPEG перед AJAX-отправкой на сервер. Движок сайта: Тамаранга v2. Код PHP/ядро сайта трогать нельзя.Технические требования:Скрипт должен перехватывать файлы в AJAX-загрузчике до отправки на сервер.Если пользователь выбирает форматы HEIC, WebP, AVIF, JFIF, TIFF, BMP или тяжелый PNG, скрипт должен на лету конвертировать их в JPEG силами браузера (используя heic2any и HTML5 Canvas).Критически важно для Тамаранги: Результат конвертации должен быть упадован в объект new File() с расширением .jpg и подставлен в отправляемый FormData вместо исходного файла.Все оригинальные имена полей (name), структуры массивов и AJAX-параметры Тамаранги должны быть строго сохранены, чтобы серверная часть движка приняла файл как обычный JPEG и штатно сгенерировала все внутренние превью (thumbnails).Настроить поочередную обработку (очередь Promise), чтобы при пакетной загрузке 5-10 фото браузер смартфона не зависал