【问题标题】:Using Multer - How do I read an uploaded file (text/.csv)使用 Multer - 如何读取上传的文件 (text/.csv)
【发布时间】:2018-08-21 21:10:38
【问题描述】:

第一次使用 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上传时如何读取文本文件内容?

【问题讨论】:

  • 抱歉,如果这是一个重复的问题 - 我不知道如何措辞,因为我不确定正确的术语是什么。

标签: javascript node.js file multer


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    希望下面的回答能解决你的问题。

    添加

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

    【讨论】:

    • 谢谢,基本上正是我所需要的,只是我使用了 readFile。
    【解决方案3】:

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

    在该对象上调用字符串将尝试解析出默认 UTF-8 格式的字符串。

    例如:bufferByteArray.toString();

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

    【讨论】:

    • 这太棒了,如果不是保存到磁盘,而是将文件保存在内存中......
    【解决方案4】:

    当你配置 Multer 时,你应该指定上传文件的目标

    类似这样的:

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

    然后,您可以使用 node file system 从存储中读取文件

    【讨论】:

    • 现在正在调查这个!谢谢
    • 虽然这是最终答案中的一步,但 Amarandah Meda 给出了最完整的答案,但谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 2014-09-02
    • 2020-12-31
    相关资源
    最近更新 更多