JS和type.match作为文件mime类型 - 需要建议

时间:2011-09-13 00:27:44

标签: javascript firefox google-chrome file-io fileapi

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

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

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

Here是基本代码

赞赏任何有用的评论:)

2 个答案:

答案 0 :(得分:17)

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

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

在此代码中,他们使用type属性并对其执行正则表达式(有关详细信息,请参阅matchRegExp)。他们的正则表达式说如果类型包含image就可以了。

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

  • 文件(不仅仅是pdf,odt也有这种类型):input.files[0].type==='application/pdf'
  • audio:input.files[0].type.match('audio.*')
  • 视频:input.files[0].type.match('video.*')

等等。

之后你可以在文件的name属性上使用选择器,如果你只想匹配某个扩展名(例如,在不同类型的文档之间进行检查,你可以查看它是否是.pdf,a .odt ...)使用例如input.files[0].name.match('\.pdf')。 但是imho没有被建议,因为用户可以轻松地玩它(删除或更改它们)。

答案 1 :(得分:0)

这可能会有所帮助:

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

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