Вопрос или проблема
Я работаю над веб-приложением, которое позволяет пользователям загружать изображения и видео с помощью элемента html <input type="file">
. Однако, когда пользователи iPhone выбирают файлы из Библиотеки Фото, iOS автоматически конвертирует изображения HEIC в JPEG и видео HEVC в MP4. Эта конверсия приводит к медленной выборке файлов и добавляет ненужные накладные расходы, и пользователь застревает в окне выбора Библиотеки Фото, пока iOS не завершит конвертацию всего в более “совместимый формат”.
Я пытался полностью убрать атрибут accept, надеясь, что это предотвратит конвертацию, но проблема остается. Я хотел бы найти способ принять родные форматы iPhone (HEIC/HEVC) без автоматической конвертации iOS. Я хочу, чтобы пользователи могли загружать свои файлы без того, чтобы устройство принуждало их к изменениям формата.
Что я пробовал:
Использование пустого атрибута accept: Удаление атрибута accept предотвращает ограничения на типы файлов, но iPhone все равно конвертирует файлы HEIC/HEVC при выборе из Библиотеки Фото.
Установка accept=”image/heic, video/hevc”: Я пытался явно принять эти форматы, но Safari/iOS продолжает конвертировать файлы.
Фильтрация файлов после выбора: Я попытался отфильтровать файлы на стороне клиента, но iPhone все равно преобразует их перед выбором.
Что я хочу: Я хочу, чтобы iPhone перестал конвертировать файлы HEIC и HEVC и загружал их в оригинальном формате. Я предпочел бы обрабатывать любые необходимые преобразования на стороне сервера.
Вопрос:
Существует ли способ сказать iOS не конвертировать файлы автоматически в процессе выбора?
Может ли атрибут accept элемента input (или любой другой подход) предотвратить эту автоматическую конвертацию?
Есть ли какие-либо обходные пути, или мне просто нужно заранее предупредить пользователя, что исчезновение окна Библиотеки Фото займет некоторое время, так как iOS выполняет преобразования.
ПРИМЕЧАНИЕ: На iOS я могу настроить формат выбора Библиотеки Фото с “Автоматически” (что выполняет конвертацию) на “Текущий”. Это работает и заставляет iOS не выполнять никаких конвертаций, однако это требует от пользователя выполнения дополнительных шагов настройки на сайте – чего я также пытаюсь избежать, если это возможно.
Среда:
Устройства: iPhone (iOS 14+)
Браузеры: Safari на iOS
Форматы: HEIC (изображения), HEVC (видео)
Ответ или решение
Вопрос, который вы подняли, касается автоматической конвертации файлов HEIC и HEVC на устройствах iPhone при использовании элемента <input type="file">
в веб-приложении. Действительно, эта проблема может быть серьезным препятствием для пользователей, которые хотят загружать файлы в их оригинальном формате. Позвольте мне изложить несколько решений и рекомендаций по этому поводу.
1. Краткое объяснение проблемы
При выборе изображений или видео из библиотеки фотографий на iPhone, система iOS автоматически конвертирует файлы HEIC в JPEG и HEVC в MP4. Эта конвертация необходима для обеспечения совместимости с другими устройствами и приложениями, но она действительно может замедлить процесс выбора файлов и вызвать неудобства.
2. Настройки iOS
Вы уже упомянули, что в iOS можно изменить настройки форматов фотографии и видео. Если пользователь вручную установит режим "Настоящий" вместо "Автоматический", то конвертация не произойдет. Однако, как вы и заметили, это требует дополнительной настройки, и ваш приоритет — минимизировать усилия со стороны пользователя.
3. Подходы для организации загрузки файлов
К сожалению, на данный момент нет программного способа предотвратить автоматическую конвертацию на уровне веб-приложения. Однако вы можете рассмотреть следующие альтернативные подходы:
A. Используйте JS SDK для взаимодействия с камерой
Вы можете рассмотреть возможность использования сторонних библиотек или фреймворков, таких как WebRTC, которые могут позволить пользователям загружать изображения и видео непосредственно с камеры без взаимодействия с библиотекой фотографий. Это может помочь избежать проблемы с конвертацией, однако это ограничит возможность выбора уже существующих файлов.
B. Предупреждение пользователей
В качестве временного обходного решения, вы можете информировать пользователей о необходимости изменения настроек формата в iOS. Это может быть сделано через модальное окно или уведомление, которое объясняет процесс:
"Для повышения скорости загрузки файлов мы рекомендуем изменить настройки формата в вашем iPhone на ‘Настоящий’. Это предотвратит автоматическую конвертацию HEIC и HEVC файлов в JPEG и MP4."
C. Серверная конвертация
Так как вы упомянули, что готовы обрабатывать конвертацию на серверной стороне, убедитесь, что ваша серверная часть способна принимать HEIC и HEVC файлы. Это позволит вам минимизировать влияние на пользователей при загрузке. При наличии возможности, можно реализовать обратную связь, чтобы пользователи знали, какой формат был успешно загружен.
Заключение
К сожалению, на текущий момент нет значительных способов обойти встроенные функции iOS, которые обрабатывают автоматическую конвертацию. Однако предложенные подходы могут помочь улучшить пользовательский опыт. Будьте внимательны к обратной связи от пользователей и рассматривайте возможность доработки интерфейса для минимизации любых недоразумений или затруднений, связанных с загрузкой файлов.
Если у вас есть дополнительные вопросы или нужны уточнения по предложенным методам, не стесняйтесь обращаться.