有谁知道如何在输入标签中使用接受属性?我可以看到它记录在案,但w3schools表明它不受任何主要浏览器的支持。测试也证实了这一点。
我知道验证应该在服务器端完成,现在正在这样做。但是最好让它限制文件上传对话框中的文件类型以提高可用性。
编辑:我完全了解仅客户端验证的安全隐患。我不打算删除服务器端验证,我正在寻找一种提高可用性的方法。
有谁知道如何在输入标签中使用接受属性?我可以看到它记录在案,但w3schools表明它不受任何主要浏览器的支持。测试也证实了这一点。
我知道验证应该在服务器端完成,现在正在这样做。但是最好让它限制文件上传对话框中的文件类型以提高可用性。
编辑:我完全了解仅客户端验证的安全隐患。我不打算删除服务器端验证,我正在寻找一种提高可用性的方法。
浏览器实际上没有实现该ACCEPT
属性的原因是 MIME 类型验证是一门科学,而不仅仅是读取文件扩展名那么容易。正如 MediaWiki 所指出的,即使是服务器端 MIME 类型验证也可能很困难:
http://www.mediawiki.org/wiki/Manual:Mime_type_detection
请注意,他们甚至会在服务器端尝试验证 MIME 类型。
最迂腐的原因是HTML4 规范不需要它(强调我的):
此属性指定处理此表单的服务器将正确处理的内容类型的逗号分隔列表。当提示用户选择要发送到服务器的文件时,用户代理可以使用此信息过滤掉不符合要求的文件。
这是一个可选功能。
我个人很想看到这个。image/*
例如,当给定时,浏览器可以将用户的照片库作为默认位置并使用大图标。text/*
可以转到文档文件夹等。移动浏览器,例如 iPhone,通常根本不允许文件上传,当表单需要图像时,可以使用它来调出图库。如果需要,我们可能会发疯并连接到扫描仪。可能性是无止境。
但是,此功能并不常用,并且文件上传对话框的操作可能会因网站支持的不同而不同,这可能会令人非常困惑。
支持这个标签意味着为浏览器实现一种方法来确定本地资源的 MIME 类型,这将导致相当多的启发式方法和可能暴露于代码注入和/或其他漏洞,浏览器已经拥有它们的公平份额.