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

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

第一次使用 Multer - 我构建了一个应用程序来解析 .csv 文件并计算文件中每个关键字和短语的出现次数,但我使用 node 和 express 进行了更改以解析文件后使用 express router 和 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上传时如何读取文本文件内容?

配置 Multer 时,您应该指定上传文件的目的地

像这样:

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

然后,您可以使用 node file system

从存储中读取文件

希望以下回答能解决您的问题。

添加

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);

另一种方法是直接访问多个文件缓冲区对象。

默认情况下,在此对象上调用字符串将尝试解析 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)
}