今天我遇到了一个有趣的事情,如FF File API和按类型分开的文件。好的,这里有一个小片段
if (!input.files[0].type.match('image.*')) {
window.alert("Select image please");
return;
}
它控制只读的图像。但是例如doc文件和pdf呢?我找不到这个有用的例子,所以我希望你能分享一些片段。我对检测不同文件类型感兴趣,但如何使用JS及其type.match绑定来控制不同的文件类型?
Here是基本代码
赞赏任何有用的评论:)
答案 0 :(得分:17)
所以基本的想法是这个代码使用文件对象,有关它们的更多信息,请参阅:
根据w3指定,File对象的type
属性是MIME类型。这在RFC 2046中定义。但规范本身并不是最有趣的部分,更有趣的是现有MIME类型here或最常用的here列表。
在此代码中,他们使用type
属性并对其执行正则表达式(有关详细信息,请参阅match和RegExp)。他们的正则表达式说如果类型包含image
就可以了。
要制作自己的选择器,您必须将上述内容组合在一起。 (某些示例使用===而不是匹配,因为mime类型是整个类型) 例如,可以进行以下检查:
input.files[0].type==='application/pdf'
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类型