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

use*_*704 8 javascript firefox file-io google-chrome fileapi

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

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

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

是基本代码

任何有用的评论是赞赏:)

Py.*_*Py. 17

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

按照w3的规定,typeFile对象的属性是MIME类型.这在RFC 2046中定义.但规范本身并不是最有趣的部分,什么是更有趣的是现有的MIME类型的列表在这里还是最常用的一个位置.

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

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

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

等等.

之后,name如果您希望仅匹配某个扩展名(例如,检查不同类型的文档,您可以查看它是.pdf,..例子input.files[0].name.match('\.pdf').但是imho没有被建议,因为用户可以轻松地玩它(删除或更改它们).

  • 可能值得一提的是,这不是 100% 完整的解决方案。例如,我拥有的示例 .mkv 文件的 `file.type` 是一个空字符串。 (2认同)