【发布时间】:2025-11-29 06:35:01
【问题描述】:
根据this answer on Stack Overflow,我们可以设置<input type="file" />的accept属性来过滤接受的输入,如下:
accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
但是,正如您在下面运行简单的 sn-p 所看到的那样,Chrome 43.0.something 似乎完全忽略此配置,而 Firefox 39.0。
我考虑改用更直接的方法,使用:
accept=".xls, .xlsx"
...在 Chrome 中运行良好,但让 Firefox 有点困惑,只接受使用 .xlsx 扩展名的文件。
考虑到这可能是非常常见和基本的,我一定遗漏了一些东西:我在哪里搞砸了? 如何获取 html5 文件输入以在浏览器中一致地仅建议 .xls 和 .xlsx 文件?
这是一个说明我的问题的代码 sn-p(以及 JSFiddle link,以防你想摆弄它)。
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"/>
【问题讨论】:
-
看起来大多数主流浏览器现在都正确实现了这个功能。我在 Chrome 36、Firefox 42 和 Internet Explorer 11 中测试了您的两个按钮,它们都可以正常工作。查看 here 了解更多信息。
-
嗯,我想我应该提到我使用的是 Linux 系统(带有 Ubuntu)。虽然,我的客户还提到 Firefox 确实在 Windows 10 环境中使用最新的 FF 过滤掉两个版本中的
.xls文件(虽然在 Chrome 上没有数据)。跨度> -
我在 Win 7 和 Vista 上进行了测试。不幸的是,我的 Win 10 盒子只有 IE11 和 Edge(还不想把其他人放在上面)。有趣的是,过滤器似乎在 Edge 中不起作用,尽管 caniuse 页面上说了什么。但是,无论操作系统如何,它们在 IE11 中都可以正常工作。我确实注意到第一个按钮似乎只有在注册 MIME 类型时才有效。
-
两者都适用于我,Windows 7、Firefox 42 和 44。
-
您对这篇文章有一个很好而详细的答案:html-input-file-accept-attribute-file-type +1 如果有帮助^^
标签: html file-upload input content-type