jQuery或JavaScript:获取客户端文件的MIME类型

SZH*_*SZH 23 javascript jquery mime-types

我想使用jQuery或JavaScript检测应用程序客户端上的文件的MIME类型.有没有办法做到这一点?谢谢.

Del*_*ani 31

您可以使用AJAX,发出HEAD请求,并检查标头的响应标Content-type头.但这只有在您从HTTP服务器获取文件时才有效.


要获取使用HTML文件选择器选择的文件的MIME类型,而不提交任何内容,请尝试:

document.getElementById('fileChooserID').files[0].type // e.g. image/png
Run Code Online (Sandbox Code Playgroud)

http://jsbin.com/akati3/2

尝试选择图像,检查MIME类型,然后尝试提交.然后尝试一些不是图像的东西.


kar*_*m79 5

可靠地检测mime类型的唯一方法是在服务器端解析文件,以确认它是用户声称的文件类型,或适合允许的类型列表。注意事项:

1-JavaScript有充分的理由限制对本地文件系统的访问。

2-您不能信任从浏览器收到的哑剧类型。它不一定与发送文件的mime类型匹配。

3-在允许用户上传符合允许类型“白名单”的文件的情况下,无论如何都可能需要进行验证-考虑到应用程序可能实际上除了存储文件外还必须对文件做些事情,至少涉及解析其标头以获取信息,例如游程长度(对于视频),版本号(对于Word文档)等。

  • 没错 想要欺骗服务器的半聪明用户可能会欺骗MIME类型。服务器应始终通过魔术仔细检查文件类型。 (7认同)

chr*_*ian 5

这个想法不信任浏览器......这个想法是在服务器端执行这个验证但是,如果在将 20MB 文件发送到浏览器之前然后因为服务器中的规则而被拒绝,这是多么有用的事情......所以,如果此文件“是候选”要上传,则“预先检查”是个好主意,最终验证将在服务器中执行。