检查node.js中的实际文件类型

时间:2015-01-25 07:51:56

标签: javascript node.js security mime file-type

我想通过向我的头像上传端点添加jpg扩展名来阻止人们上传电影文件或shell脚本。我没有在很长一段时间内写后端来上传脚本,但我记得PHP能够告诉我实际的文件类型,而不仅仅是基于文件扩展名的类型。我也可以在前端JS上检查这个。或者在Java中有http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#probeContentType%28java.nio.file.Path%29

问题在于vanilla节点,使用一堆mime相关模块(包括mmmagic)只是根据文件扩展名返回mime类型。例如,我删除了gif文件上的gif扩展名,并将其更改为txt,Node和mmmagic都返回text/plain

1 个答案:

答案 0 :(得分:2)

在Java中,我使用的是Tika,它是一个mime类型的检测器工具。事实证明,它有一个nodejs桥,node-tika

使用

npm install node-tika

var tika = require('tika');

tika.type('test/data/file.pdf', function(err, contentType) {
  console.log(contentType); // Logs 'application/pdf'.
});