为什么主要浏览器不支持输入type =“file”的HTML ACCEPT属性?

时间:2009-11-16 18:28:33

标签: html cross-browser xhtml html-form browser-support

有没有人知道如何在输入标签中使用accept属性?我可以看到它记录在案,但w3schools表示任何主要浏览器都不支持它。测试也证实了这一点。

我知道验证应该在服务器端完成,而现在正在这样做。但是,为了便于使用,限制文件上传对话框中的文件类型会很好。

编辑:我完全了解仅客户端验证的安全隐患。我不打算删除服务器端验证,并且正在寻找提高可用性的方法。

4 个答案:

答案 0 :(得分:3)

浏览器实际上没有实现ACCEPT属性的原因是MIME类型验证是一门科学,而不仅仅是读取文件扩展名。甚至服务器端MIME类型验证也很困难,如MediaWiki所述:

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

请注意,他们尝试来验证MIME类型,甚至是服务器端。

答案 1 :(得分:3)

每个主要浏览器都支持此属性。 有用的链接是 - caniuse.com

w3 schools browser support for accept attriute

对于想要了解HTML accept属性的浏览器支持的人来说,这会有所帮助。

答案 2 :(得分:1)

最迂腐的原因是它不是required by HTML4规范(强调我的):

  

此属性指定以逗号分隔的内容类型列表,处理此表单的服务器将正确处理这些内容类型。用户代理可能使用此信息在提示用户选择要发送到服务器的文件时过滤掉不合格的文件。

这是一个可选功能。

我个人很乐意看到这一点。例如,当给定image/*时,浏览器可以将用户的照片库作为默认位置并使用大图标。 text/*可以转到文档文件夹等。移动浏览器(例如iPhone)通常根本不允许文件上传,可以在表单期待图像时使用它来调出库。如果需要,我们可能会发疯并连接到扫描仪。可能性是无穷无尽的。

但是,此功能并不常用,根据网站支持的内容,文件上传对话框的操作方式可能会非常混乱。

答案 3 :(得分:0)

支持此标记意味着为浏览器实现一种确定本地资源的MIME类型的方法,这将导致相当多的启发式和可能暴露于代码注入和/或其他漏洞,浏览器已经拥有它们公平分享。