5

我在这里遇到了一个奇怪的问题。(要么这样,要么我只是忽略了一些愚蠢简单的事情。)

我有一个文件上传表单,我希望它只接受某些类型的文件,其中包括 MS Word 文档。我将 .doc 和 .docx MIME 类型(application/mswordapplication/vnd.openxmlformats-officedocument.wordprocessingml.document分别)添加到文件输入字段的接受属性中,但是当我点击“选择文件”时,.doc 和 .docx 文件仍然是灰色的,因为不允许上传。

那么,我错过了什么?任何帮助或指示将不胜感激!

(是的,我知道表单检查不是过滤上传文件的好方法。我有 PHP 覆盖,这对用户来说更方便,所以他们不会去上传不允许的文件.)

4

2 回答 2

7

对该属性的支持accept一直很差,但正在慢慢变得越来越普遍。在我的 Google Chrome 19 上,该元素<input type="file" accept="application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword" />有效,因此选择仅限于 .doc 和 .docx 文件。其他浏览器通常会忽略这样的accept属性,尽管例如 Firefox 支持一些简单的情况,例如accept="image/gif".

除此之外,浏览器可能会以不同的方式将 MIME 类型映射到文件扩展名(通常是文件系统将其视为“文件类型”指示符)。因此,尽管该属性在某些情况下可能会起作用,但当映射不同时,它可能会使事情变得更糟。

于 2012-05-08T03:58:52.773 回答
0

我是 Word 文件的 MIME 类型,可能未在浏览器中注册,因此 Word 文件被报告为application/octet-stream. 通常,HTML 表单中的 MIME 类型过滤不能可靠地工作,但常见的图像 MIME 类型除外。

您可以创建一个 JavaScript 解决方案来检查文件的扩展名。

于 2012-05-07T20:01:55.880 回答