Форма файла HTML, принимать документы Word

У меня тут немного странная проблема. (Либо так, либо я просто упускаю из виду что-то глупо простое.)

У меня есть форма загрузки файлов, и я хочу, чтобы она принимала только определенные типы файлов, среди которых документы MS Word. Я добавил MIME-типы .doc и .docx (application/msword и application/vnd.openxmlformats-officedocument.wordprocessingml.document соответственно) в атрибут accept поля ввода файла, но когда я нажимаю «выбрать файл», файлы .doc и .docx по-прежнему отображаются серым цветом как не разрешенные. для загрузки.

Итак, что мне не хватает? Любая помощь или указатели будут очень признательны!

(И да, я знаю, что проверка формы не является хорошим способом фильтрации загружаемых файлов. У меня есть PHP, покрывающий это, это больше удобно для пользователя, поэтому они не идут и загружают запрещенный файл .)


person Fang    schedule 07.05.2012    source источник


Ответы (2)


Я тип MIME для файлов Word, вероятно, не зарегистрирован в браузере, поэтому файл Word отображается как application/octet-stream. Как правило, фильтрация типов MIME в HTML-формах работает ненадежно, за исключением обычных типов изображений MIME.

Вы можете создать решение JavaScript для проверки расширения файла.

person Greg Inozemtsev    schedule 07.05.2012
comment
Я знал, что он не поддерживается Safari и IE, но приятно знать, что распознавание MIME-типов также может различаться в разных браузерах. Тогда я выкину это. Решение JavaScript может быть лучшей идеей. Спасибо! - person Fang; 08.05.2012

Поддержка атрибута accept была плохой, но постепенно становится все более распространенной. В моем Google Chrome 19 элемент <input type="file" accept="application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword" /> работает так, что выбор ограничен файлами .doc и .docx. Другие браузеры обычно игнорируют такой атрибут accept, хотя, например. Firefox поддерживает некоторые простые случаи, такие как accept="image/gif".

В дополнение к этому, браузеры могут по-разному сопоставлять типы MIME с расширениями имен файлов (которые файловые системы обычно рассматривают как индикаторы «типа файла»). Поэтому, хотя атрибут может работать в некоторых ситуациях, он может ухудшить ситуацию, если сопоставление отличается.

person Jukka K. Korpela    schedule 08.05.2012