一般情况下,文件都有扩展名,例如:xxx.gif、xxxx.avi。但是,也有带后缀的文件。删除文件的后缀不会影响文件本身的内容。因此,在文件的数据中,还有其他的方式来识别文件的类型。在编程中,标识文件格式的常量称为MagicNumber,它的原名是:FileSignatures(文件签名)。MagicNumbers在编程中的使用分为三类:意义无法解释的唯一值,或者在程序中被多次引用但可以被命名常量替换的值。用于标识文本类型的常量值或字符。不易被误解为其他含义的唯一值,例如全局唯一标识符。使用MagicNumber判断文件类型1.请求获取文件数据并转换成ArrayBufferfunctionloadFile(url){returnnewPromise((resolve,reject)=>{constxhr=newXMLHttpRequest()xhr.onreadystatechange=function(){if(xhr.readyState===4){resolve(xhr)}}xhr.onerror=rejectxhr.open('GET',url,true)xhr.responseType='arraybuffer'xhr.send('')})}2。缓冲区到十六进制字符串函数buf2hex(buffer){returnArray.prototype.map.call(newUint8Array(buffer),x=>('00'+x.toString(16)).slice(-2).join('')}3.根据16进制字符串获取文件头,判断文件类型)//todo....})}测试:普通文件头幻数JPEG(jpg),文件头:ffd8ffPNG(png),文件头:89504E47GIF(gif),文件头:47494638TIFF(tif),文件头:49492A00WindowsBitmap(bmp),文件头:424DCAD(dwg),文件头:41433130AdobePhotoshop(psd),文件头:38425053RichTextFormat(rtf),文件头:7B5C727466XML(xml),文件头:3C3F786D6CHML(html),文件标头:68746D6C3EEmail[雷神toughonly](eml),文件头:44656C69766572792D646174653AOutlookExpress(dbx),文件头:CFAD12FEC5FD746FOutlook(pst),文件头:2142444EMSWord/Excel(xls.or.doc),文件头:D0CF11E0MSAccess(mdb),文件头:5374616E64617264204AWordPerfect(wpd),文件头:FF575043AdobeAcrobat(pdf),文件头:255044462D312EQuicken(qdf),文件头:AC9EBD8FWindows密码(pwl),文件头:E3828596ZIPArchive(zip),文件头:504ARB056文件头(2ARB057文件头:wav),文件头:57415645AVI(avi),文件头:41564920RealAudio(ram),文件头:2E7261FDRealMedia(rm),文件头:2E524D46MPEG(mpg),文件头:000001BAMPEG(mpg),文件头:000001B3Quicktime(mov),文件头:6D6F6F76WindowsMedia(asf),文件头:3026B2758E66CF11MIDI(mid),文件头:4D546864mp3:494433
