【问题标题】:Get file type Node.js [duplicate]获取文件类型 Node.js [重复]
【发布时间】:2021-01-27 22:07:20
【问题描述】:

大家好,我正在尝试在 Node.js 中获取文件类型。我必须在上传文件之前重命名文件以进行版本控制,一旦文件被写入,然后对其进行一些处理。

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

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

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

但由于我正在重命名此文件并且用户可以简单地将恶意文件重命名为列入白名单的扩展名,因此我正在寻找一种实际确定文件类型的解决方案,特别是 CSV。

谁能指出解决这个问题的方向?

【问题讨论】:

  • 你需要支持什么文件扩展名?
  • @ManuelSpigolon 只是 CSV
  • 你可以使用path.extname(fullnameofthefile)
  • CSV 是一个完全基于文本的公式,因此很难检查某些内容是否真的是 csv。你可以检查它是否都是ASCII码。

标签: javascript node.js


【解决方案1】:

要读取文件扩展名,您可以使用 sn-p:

const { extname } = require('path')

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

但由于我正在重命名此文件并且用户可以简单地将恶意文件重命名为列入白名单的扩展名,因此我正在寻找一种实际确定文件类型的解决方案,特别是 CSV。

通常,要实现此检查,您需要读取文件的魔法字节并针对有限的一组 file types 采取相应措施,但 CSV 不在此列表中。

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

  • 阅读一些行并尝试解析它们
  • 定义 CSV 必须有一个已定义的标头,例如 id,col1,col2,etc
  • 使用一些工具来尝试猜测文件的 MIME 类型(如 mime-types

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2015-11-20
    • 2014-03-21
    • 2013-04-16
    相关资源
    最近更新 更多