我在这里遇到了一个奇怪的问题。 (不管怎样,或者我只是忽略了一些愚蠢的事情。)
我有一个文件上传表单,我希望它只接受某些类型的文件,其中包含MS Word文档。我将.doc和.docx MIME类型(分别为application/msword
和application/vnd.openxmlformats-officedocument.wordprocessingml.document
)添加到文件输入字段的accept属性中,但是当我点击"选择文件"时, .doc和.docx文件仍然显示为灰色,因为不允许上传。
那么,我错过了什么?任何帮助或指示将不胜感激!
(是的,我知道表单检查并不是过滤上传文件的好方法。我已经有PHP覆盖了这一点,这对用户来说更方便,所以他们没有&#39 ; t去上传一个不允许的文件。)
答案 0 :(得分:5)
对accept
属性的支持一直很差,但逐渐变得越来越普遍。在我的Google Chrome 19上,元素<input type="file" accept="application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword" />
正常工作,因此选择仅限于.doc和.docx文件。其他浏览器通常会忽略此类accept
属性,例如Firefox支持一些简单的案例,如accept="image/gif"
。
除此之外,浏览器可以以不同的方式将MIME类型映射到文件扩展名(通常是文件系统将其视为“文件类型”指示符)。因此,尽管该属性在某些情况下可能有效,但在映射不同时可能会使事情变得更糟。
答案 1 :(得分:0)
我是Word文件的MIME类型可能未在浏览器中注册,因此Word文件报告为application/octet-stream
。通常,HTML表单中的MIME类型过滤不能可靠地工作,除了常见的图像MIME类型。
您可以创建一个JavaScript解决方案来检查文件的扩展名。