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

时间:2018-03-13 14:44:03

标签: javascript node.js file multer

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

4 个答案:

答案 0 :(得分:2)

配置Multer时,您应该指定上传文件的名称

类似的东西:

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

然后,您只需使用node file system

从存储中读取文件即可

答案 1 :(得分:2)

我希望以下答案可以解决您的问题。

添加

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

之后

app = express(); 

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

 req.files 

例如,输入字段名称为&#34; test&#34;。您可以访问以下文件详细信息。

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

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

所以你可以使用

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

然后你可以看看

console.log(data);

答案 2 :(得分:0)

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

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

例如:bufferByteArray.toString();

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

答案 3 :(得分:0)

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

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)
}
相关问题