Почему крупные браузеры не поддерживают HTML-атрибут ACCEPT для ввода type = "file"? - PullRequest
5 голосов
/ 16 ноября 2009

Кто-нибудь знает, как использовать атрибут accept во входных тегах? Я могу видеть это задокументированным, но w3schools указывает, что он не поддерживается ни одним из основных браузеров. Тестирование также подтверждает это.

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

Редактировать: Я полностью осведомлен о последствиях безопасности для проверки только на стороне клиента. Я не собираюсь удалять проверку на стороне сервера и ищу способ улучшить удобство использования.

Ответы [ 4 ]

3 голосов
/ 19 января 2017

Этот атрибут поддерживается всеми основными браузерами. Полезные ссылки: caniuse.com

Поддержка браузера w3 школ для принятия атрибута

Думаю, это будет полезно для тех, кто хочет узнать о поддержке браузером атрибута HTML accept.

3 голосов
/ 16 ноября 2009

Причина, по которой браузеры на самом деле не реализуют атрибут ACCEPT, заключается в том, что проверка типов MIME - это наука, и она не так проста, как чтение расширения файла. MediaWiki отмечает, что даже проверка типа MIME на стороне сервера может быть затруднена:

http://www.mediawiki.org/wiki/Manual:Mime_type_detection

Обратите внимание, что они пытаются проверить тип MIME даже на стороне сервера.

1 голос
/ 16 ноября 2009

Самая педантичная причина в том, что не требуется спецификации HTML4 (выделено мной):

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

Это дополнительная функция.

Я бы лично хотел это увидеть. Например, если задано значение image/*, браузер может вызвать библиотеку фотографий пользователя в качестве местоположения по умолчанию и использовать большие значки. text/* может перейти в папку с документами и т. Д. Мобильные браузеры, такие как iPhone, которые обычно вообще не допускают загрузку файлов, могут использовать это для вызова галереи, когда форма ожидает изображение. Мы могли бы сойти с ума и подключиться к сканеру при желании. Возможности бесконечны.

Тем не менее, эта функция не используется широко, и это может привести к путанице из-за того, что диалоги загрузки файлов работают по-разному в зависимости от того, что поддерживает веб-сайт.

0 голосов
/ 16 ноября 2009

Поддержка этого тега будет означать реализацию для браузера способа определения типа MIME локального ресурса, и это потребует значительного количества эвристик и возможного подверженности внедрению кода и / или другим уязвимостям, которые браузеры уже имеют справедливая доля.

...