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

Javascript JS和type.match作为文件mime类型-需要建议吗,javascript,firefox,google-chrome,file-io,fileapi,Javascript,Firefox,Google Chrome,File Io,Fileapi,今天,我遇到了一件有趣的事情,FF文件API和按类型划分的文件。好的,这里有一个小片段 if (!input.files[0].type.match('image.*')) { window.alert("Select image please"); return; } 它控制图像为只读。但以文档文件和pdf为例呢?我找不到这方面有用的例子,所以我希望你能分享一些片段。我感兴趣的是检测不同的文件类型,但是如何使用JS及其type.

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

if (!input.files[0].type.match('image.*')) {
            window.alert("Select image please");
            return;
        }
它控制图像为只读。但以文档文件和pdf为例呢?我找不到这方面有用的例子,所以我希望你能分享一些片段。我感兴趣的是检测不同的文件类型,但是如何使用JS及其type.match绑定控制不同的文件类型呢

是基本代码吗


任何有用的注释都非常感谢:)

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

  • (规范)
  • (Mozilla实现)
根据指定,文件对象的
type
属性是MIME类型。这是在中定义的。但是规范本身并不是最有趣的部分,更有趣的是现有MIME类型或最常用类型的列表

在这段代码中,他们使用
type
属性并对其执行regexp(有关更多信息,请参阅和)。他们的regexp表示,如果类型包含
image
,就可以了

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

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

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

这可能会有帮助:

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

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

是否确实有效?类型属性应该是
file
no?您所指的类型是
accept
属性,该属性可以接受任何MIME类型值。是的,它可以工作并使您仅获取图像以外的文件。但我想看看如何对文档或pdf文件执行相同的操作?嗯。。。谢谢你的链接。“text/html”、“image/x-rgb”或“application/java”)可能就是重点。我不太确定它是否是accept file属性,因为JS使用image.*作为它的if操作符:(所以我需要你的建议我应该看什么?据我所知,
.match(image.*)
匹配图像中的每个字符串。但为了帮助我重现您的案例,我需要提供输入对象的html/js。好的,我刚刚编辑了我的问题。请观看-我将“视频”一个添加到我现有的“图像”一个中,效果很好!如果(!file.type.match(/^image\/)&!file.type.match(/^video\/){;可能值得一提的是,这不是一个100%完整的解决方案。例如,我拥有的示例.mkv文件的
file.type
是一个空字符串。