node.js解决获取图片真实文件类型的问题

前端技术 2023/09/05 JavaScript

遇到一个需求:假定有一个图片文件,真实的类型为jpg,而有人偷懒把jpg直接复制一张,存为同名的png文件,这样在as3读取文件时不会遇到问题,但手机c++在读取文件时却遇到问题了 - -!

现在就需要写一个程序,遍历所有文件夹下的文件,查找文件格式“不正常”的文件。我们的资源主要是gif、png、jpg,最开始,我到网上找到一篇文章:根据二进制流及文件头获取文件类型mime-type,然后读取文件二进制的头信息,获取其真实的文件类型,对与通过后缀名获得的文件类型进行比较。

复制代码 代码如下:

var fd = fs.openSync(new_file_path, \'r\');
var buffer = new Buffer(8);

var mineType = mime.lookup(new_file_path);
var fileType = mime.extension(mineType);

fs.readSync(fd, buffer, 0, 8, 0);
var newBuf = buffer.slice(0, 4);
var head_1 = newBuf[0].toString(16);
var head_2 = newBuf[1].toString(16);
var head_3 = newBuf[2].toString(16);
var head_4 = newBuf[3].toString(16);
var head_iden = head_1 + head_2;

var tempFileType = FILE_TYPE_CONFIG[head_iden];
if (!tempFileType) {
    head_iden += head_3;

    tempFileType = FILE_TYPE_CONFIG[head_iden];

    if (!tempFileType) {
        var msg = \"Unknow fileType \" + new_file_path + \'-\' + fileType;
        showLog(msg);
        continue;
    }
}

if (tempFileType != fileType) {
    var msg = \"Error fileType\" + new_file_path + \'-\' + fileType + \'|\' + tempFileType + \'--正确的图像文件格式\';
    showLog(msg);

    g_errorFileTypArr.push(msg);
}

本文地址:https://www.stayed.cn/item/13010

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。