В соответствии с этим ответом на переполнение стека мы можем установить атрибут 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"/>