下载文件 MIME TYPE智能检测-出家如初,成佛有余

下载文件 MIME TYPE智能检测

技术 admin 223浏览 0评论

在做下载应用时,需要对下载文件的实际类型MIME TYPE精确检测。
通常情况下都通过下载文件的扩展名来判断文件类型,但此种方法并不准确。例如微信公众号文章中,img标签的src属性中并不带图片扩展名。
例如如下形式:
https://mmbiz.qpic.cn/sz_mmbiz_jpg/Xd0GjIDRVWbzzaOCytRds7yyNI3SLkibtJIVekvYcvsbVK7pBYt7qQh66NLXibeliakeWJO8KeIE3NR7sT1ev933A/640

解决办法:
XMLHttpRequest(XHR)+ DataView + ArrayBuffer

基本原理:
1、在Javascript中发起AJAX请求,response 类型设置为 arraybuffer;
2、解析二进制响应结果的前两个字节,转为16进制数,可以得到所谓的文件类型 File signature (或者 Magic Number),对文件类型(MIME TYPE)进行匹配,得到结果。

其中:
ArrayBuffer、DataView 是JavaScript操作二进制数据的一个接口,是 WebGL 的基础接口。
XMLHttpRequest(XHR)是AJAX的底层接口,目前版本为 XMLHttpRequest2(XHR2)。

例子:demo

一个搜集文件类型签名的工具站:https://www.filesignatures.net

参考资料:发送和接收二进制数据

转载请注明:出家如初,成佛有余 » 下载文件 MIME TYPE智能检测

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址