Node js:如何获取文件签名标头而不是 mime 类型?

2024-05-05

我下载了this https://www.npmjs.com/package/mime-types我的 Node js 项目的模块,它似乎在某种程度上工作正常。如果你console.log(mime.lookup(pathToFile));它返回文件具有的正确文件类型。问题在于它检查文件扩展名以获取文件类型,而不检查文件的前几个字节(文件签名标头)以实际获取正确的文件类型。所以如果我有一个.png图像,它返回image/png但如果我只是将文件扩展名更改为类似的内容.mp4它认为该文件是video/mp4。有没有一种方法可以安全地检查它,以便某些用户不会上传对服务器有害的内容?也许另一个模块?谢谢你!


尝试使用文件类型 https://www.npmjs.com/package/file-type.

检测 Buffer/Uint8Array 的文件类型

通过检查缓冲区的幻数来检测文件类型。

const readChunk = require('read-chunk'); // npm install read-chunk 
const fileType = require('file-type');
const buffer = readChunk.sync('unicorn.png', 0, 262);

fileType(buffer);
//=> {ext: 'png', mime: 'image/png'} 

它需要读取前 262 个字节。检查支持的扩展page https://www.npmjs.com/package/file-type#supported-file-types

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node js:如何获取文件签名标头而不是 mime 类型? 的相关文章

随机推荐