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

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

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


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

 document.getElementById('fileChooserID').files[0].type // eg image/png 

http://jsbin.com/akati3/2

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

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

1 – JavaScript有限制地访问本地文件系统,并且有充分的理由。

2 – 您无法信任从浏览器收到的mime类型。 它不一定与发送文件的mime类型匹配。

3 – 在允许用户上传符合允许类型的“白名单”的文件的情况下,无论如何都可能需要validation – 考虑到应用程序可能必须实际对文件执行某些操作,而不是存储它们。至少涉及解析其标题以获取诸如运行长度(对于video)版本号(对于Word文档)等信息。

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