繁体   English   中英

使用Multer-如何读取上载的文件(text / .csv)

[英]Using Multer - How do I read an uploaded file (text/.csv)

第一次使用Multer-我构建了一个应用程序来解析.csv文件,并计算文件中每个关键字和词组的出现次数,但是我使用node进行了更改,并表示要解析该文件,然后再使用快速路由器和multer。

我有点困惑,因为我不再读取文件,而是这样:

{
[💻]   fieldname: 'file-upload',
[💻]   originalname: 'Google-Analytics.csv',
[💻]   encoding: '7bit',
[💻]   mimetype: 'text/csv',
[💻]   buffer: <Buffer 48 65 61 64 65 72 2c 53 75 62 2d 68 65 61 64 65 72 2c 54 61 67 2c 4b 65 79 77 6f 72 64 73 2c 54 65 73 74 69 6d 6f 6e 69 61 6c 0d 0a 54 75 72 6e 20 69 ... >,
[💻]   size: 2990
}

我认为我需要找到一些东西来处理缓冲区,因为Jimp处理从multer上传的图像。

TL; DR; 使用multer上传时如何阅读文本文件的内容?

我希望下面的答案能解决您的问题。

app.use(multer({
  dest: 'uploads/'
}));

app = express(); 

在请求处理程序中,您可以访问以下文件详细信息

 req.files 

例如,在输入字段中的名称是“ test”。 您可以按以下方式访问文件详细信息。

req.files.test
req.files.test.path

将为您提供文件的确切路径。

所以你可以使用

let data = fs.createReadStream(req.files.test.path,'utf8');

那你可以看看

console.log(data);

配置Multer时,您应该指定上传文件的用途

像这样的东西:

var upload = multer({ dest: 'uploads/' })

然后,您可以使用节点文件系统从存储中读取文件

一种替代方法是直接访问multer文件的Buffer对象。

默认情况下,在此对象上调用string会尝试解析出UTF-8中的字符串。

例如:bufferByteArray.toString();

https://nodejs.org/api/buffer.html

用文件名附加上载文件的扩展名。

filename: function (req, file, cb) {
console.log("File Object",file);
let ext = '';
if(file.originalname.split('.').length >1 ){
ext = file.originalname.substring(file.originalname.lastIndexOf('.'));
}
console.log('ext', ext);
cb(null, file.fieldname + '-' + Date.now() + ext)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM