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