node.js解决获取图片真实文件类型的问题
遇到一个需求:假定有一个图片文件,真实的类型为jpg,而有人偷懒把jpg直接复制一张,存为同名的png文件,这样在as3读取文件时不会遇到问题,但手机c++在读取文件时却遇到问题了--!
现在就需要写一个程序,遍历所有文件夹下的文件,查找文件格式“不正常”的文件。我们的资源主要是gif、png、jpg,最开始,我到网上找到一篇文章:根据二进制流及文件头获取文件类型mime-type,然后读取文件二进制的头信息,获取其真实的文件类型,对与通过后缀名获得的文件类型进行比较。
varfd=fs.openSync(new_file_path,'r'); varbuffer=newBuffer(8);
varmineType=mime.lookup(new_file_path); varfileType=mime.extension(mineType);
fs.readSync(fd,buffer,0,8,0); varnewBuf=buffer.slice(0,4); varhead_1=newBuf[0].toString(16); varhead_2=newBuf[1].toString(16); varhead_3=newBuf[2].toString(16); varhead_4=newBuf[3].toString(16); varhead_iden=head_1+head_2;
vartempFileType=FILE_TYPE_CONFIG[head_iden]; if(!tempFileType){ head_iden+=head_3;
tempFileType=FILE_TYPE_CONFIG[head_iden];
if(!tempFileType){ varmsg="UnknowfileType"+new_file_path+'-'+fileType; showLog(msg); continue; } }
if(tempFileType!=fileType){ varmsg="ErrorfileType"+new_file_path+'-'+fileType+'|'+tempFileType+'--正确的图像文件格式'; showLog(msg);
g_errorFileTypArr.push(msg); }