Ответ 1
Перенесите их как mime-тип, так и расширение
<input type="file" name="file2" accept="text/csv, .csv"/>
В соответствии с этим ответом на переполнение стека мы можем установить атрибут accept
для <input type="file" />
для фильтрации принятого ввода следующим образом:
accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
Однако, поскольку вы можете заметить запуск простого фрагмента ниже, Chrome 43.0.something появляется просто игнорировать эту конфигурацию, в то время как это прекрасно понимается Firefox 39,0.
Я решил переключиться на более грубый подход, используя:
accept=".xls, .xlsx"
... который отлично работает в Chrome, но делает Firefox несколько запутанным, принимая только файлы с расширением .xlsx
.
Учитывая, что это, вероятно, очень распространенное и основное, я должен что-то упустить: где я напортачиваюсь? Как получить входной файл html5, чтобы предлагать только файлы .xls
и .xlsx
последовательно в браузерах?
Вот фрагмент кода, иллюстрирующий мою проблему (наряду с ссылка JSFiddle, если вы хотите поиграть с ней).
Accepts application/vnd.ms-excel and the likes:<br />
<label for="file1">File input</label>
<input type="file" name="file1" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"/>
<hr />
Accepts .xls and .xlsx:<br />
<label for="file2">File input</label>
<input type="file" name="file2" accept=".xls, .xlsx"/>
Перенесите их как mime-тип, так и расширение
<input type="file" name="file2" accept="text/csv, .csv"/>
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Это не ответ каким-либо образом, а просто примечание потенциальным другим читателям, пытающимся использовать этот атрибут неправильно.
В эта неофициальная ссылка W3C атрибута accept
вы можете найти следующее:
Совет. Не используйте этот атрибут в качестве инструмента проверки. Загрузка файлов должна быть проверена на сервере.
не рекомендуется использовать этот атрибут для проверки, поскольку пользователи могут каким-то образом обойти его, а не все браузеры ведут себя одинаково.
Во-первых: у вас определенно есть html5 doctype?
<!DOCTYPE html>
Потому что, если вы этого не сделали, это может не работать в некоторых местах.
Во-вторых: вместо использования html вы можете использовать javascript или jquery. См. Этот вопрос/ответ: jquery - проверьте расширение файла перед загрузкой
В-третьих: По моему опыту, некоторые материалы html5 просто не работают. Я не знаю, почему, но возникает необходимость обойти проблемы с помощью jquery, например.
В любом случае вы должны всегда проверять на стороне сервера, чтобы убедиться, что загрузка пользователя - это то, к чему вы ее ограничили.