提问者:小点点

获取文件类型node.js[duplicate]


嘿,各位,我正在尝试获取node.js中的文件类型。为了进行版本控制,我必须在上传文件之前重命名文件,一旦文件被写入,然后对其运行一些处理。

我知道我可以在客户端检查文件类型,但我仍然认为做一个服务器端检查是有益的。

其他解决方案将文件扩展名从文件名中弹出:

return filename.split('.').pop();

但是,由于我正在重命名这个文件,而且用户可以简单地将恶意文件重命名为白名单扩展名,所以我正在寻找一种能够确定文件类型的解决方案,特别是CSV。

有谁能给我指出解决这个问题的方向吗?


共1个答案

匿名用户

要读取文件扩展名,可以使用以下代码段:

const { extname } = require('path')

console.log(extname('foo.csv')) // .csv
console.log(extname('BAR.CSV')) // .CSV

但是,由于我正在重命名这个文件,而且用户可以简单地将恶意文件重命名为白名单扩展名,所以我正在寻找一种能够确定文件类型的解决方案,特别是CSV。

通常,要实现这种检查,您需要读取文件的神奇字节,并针对有限的一组文件类型执行相应的操作,但CSV不在此列表中。

CSV是具有定义格式的纯文本,因此您可以:

  • 读取某些行并尝试分析它们
  • 定义CSV必须具有定义的标头,如id,col1,col2等
  • 使用一些尝试猜测文件mime类型的工具(如mime-types)