9

今天我遇到了一个有趣的事情,即 FF File API 和按类型分隔文件。好的,这是一个小片段

if (!input.files[0].type.match('image.*')) {
            window.alert("Select image please");
            return;
        }

它控制只读图像。但是例如 doc 文件和 pdf 呢?我找不到有用的例子,所以我希望你能分享一些片段。我有兴趣检测不同的文件类型,但是如何使用 JS 及其 type.match 绑定来控制不同的文件类型?

是基本代码

任何有用的评论表示赞赏:)

4

2 回答 2

17

所以基本思想是这段代码使用文件对象,有关它们的更多信息,请参阅:

根据w3的规定,File 对象的type属性是 MIME 类型。这是在RFC 2046中定义的。但是规范本身并不是最有趣的部分,更有趣的是这里的现有 MIME 类型列表这里最常用的一种。

在此代码中,他们使用type属性并在其上执行正则表达式(有关更多信息,请参见matchRegExp)。他们的正则表达式说如果类型包含image.

要制作自己的选择器,您必须结合以上内容。(某些示例使用 === 而不是 match,因为 mime 类型是整个类型)例如,可以进行以下检查:

  • 文档(不只是 pdf,例如,odt 也有这种类型):input.files[0].type==='application/pdf'
  • 声音的 :input.files[0].type.match('audio.*')
  • 视频 :input.files[0].type.match('video.*')

等等。

之后,name如果您希望仅匹配某些扩展名(例如,检查不同类型的文档,您可以查看它是否是 .pdf、.odt ...),则可以在文件的属性上使用选择器 for例子input.files[0].name.match('\.pdf')。但是恕我直言,不建议这样做,因为用户可以轻松地使用它(删除或更改它们)。

于 2011-09-14T07:13:12.240 回答
3

这可能会有所帮助:

file.mimetype.match('text.*|image.*|application.*')

这将检查所有可接受的 mime 类型

于 2018-02-20T04:44:13.927 回答