Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取文件类型Node.js_Javascript_Node.js - Fatal编程技术网

Javascript 获取文件类型Node.js

Javascript 获取文件类型Node.js,javascript,node.js,Javascript,Node.js,大家好,我正在尝试获取Node.js中的文件类型。我必须在上传文件进行版本控制之前对其进行重命名,一旦文件被写入,然后对其进行一些处理 我知道我可以在客户端检查文件类型,但我仍然认为进行服务器端检查也是有益的 其他解决方案已将文件扩展名从文件名中弹出: return filename.split('.').pop(); 但由于我正在重命名此文件,用户可以简单地将恶意文件重命名为白名单扩展名,因此我正在寻找一种解决方案,以实际确定文件类型,特别是CSV 有人能告诉我解决这个问题的方向吗?要阅读文

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

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

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

return filename.split('.').pop();
但由于我正在重命名此文件,用户可以简单地将恶意文件重命名为白名单扩展名,因此我正在寻找一种解决方案,以实际确定文件类型,特别是CSV


有人能告诉我解决这个问题的方向吗?

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

const{extname}=require('path')
console.log(extname('foo.csv'))/.csv
console.log(extname('BAR.CSV'))/.CSV
但由于我正在重命名此文件,用户可以简单地将恶意文件重命名为白名单扩展名,因此我正在寻找一种解决方案,以实际确定文件类型,特别是CSV

通常,要实现此检查,您需要读取文件的魔法字节,并对有限的一组CSV执行相应操作,但CSV不在此列表中

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

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

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