Сайт дошки оголошень (Тамаранга 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 фото браузер смартфона не зависав