我想使用jQuery或JavaScript在我的应用程序的客户端检测文件的MIME类型。有没有办法做到这一点? 感谢。
答案 0 :(得分:31)
您可以使用AJAX,发出HEAD请求,并检查Content-type
标头的响应标头。但这只有在您从HTTP服务器获取文件时才有效。
要获取使用HTML文件选择器选择的文件的MIME类型,而不提交任何内容,请尝试:
document.getElementById('fileChooserID').files[0].type // e.g. image/png
示例强>
尝试选择图片,检查MIME类型,然后尝试提交。然后尝试一些不是图像的东西。
答案 1 :(得分:4)
可靠地检测mime类型的唯一方法是解析服务器端的文件,确认它是用户声称的类型,或者它是否适合列表允许的类型。需要考虑的事项:
1 - JavaScript限制了对本地文件系统的访问,并且有充分的理由。
2 - 您无法信任从浏览器收到的mime类型。它不一定与发送文件的mime类型匹配。
3 - 在允许用户上传符合允许类型的“白名单”的文件的情况下,无论如何都可能需要验证 - 考虑到应用程序可能必须实际对文件执行某些操作而不是存储它们,至少会涉及解析其标题以获取诸如运行长度(视频)版本号(对于Word文档)等信息。
答案 2 :(得分:4)
这个想法不信任浏览器......这个想法是在SERVER SIDE上执行这个验证但是,如果先将20MB文件发送到浏览器并且接下来由于服务器中的规则而被拒绝,这是多么有用的事情。 .so,最好“预先检查”该文件是否“上传”,最终验证将在服务器中执行。