如何将csv文件流式传输到节点Web应用程序?

Che*_*hev 2 csv file-upload stream node.js express

我只是在工作一个新项目。这是一个内部ExpressJS应用程序,允许员工输入数据。有一项功能允许他们输入工资调整,但是页面仅允许他们一次输入一个调整并点击提交。他们需要批量上传功能,以便可以上传可能包含数百项调整的CSV文件。

我可以使用该功能,但是我正在使用的文件上传中间件将文件放置在临时目录中。我目前正在读取文件,解析调整项,并将调整应用于薪资数据库,然后再从服务器中删除临时文件。一切都很好,但我真的很讨厌我正在做文件系统I / O以及在需要解析数据时将文件读入内存。

当我了解有关通过http传输数据的更多信息时,我意识到应该可以流式传输文件并在项目出现时对其进行解析。如果是这样,我是否应该为此使用一个流行的模块?将文件流传输到服务器并动态解析文件的最简单方法是什么?

gen*_*nry 5

https://www.npmjs.com/package/busboy https://www.npmjs.com/package/fast-csv

var Busboy = require('busboy'); // to handle the form
var csv = require('fast-csv');

function (req, res) {
  var busboy = new Busboy({ headers: req.headers });
  busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
    file.pipe(csv())
      .on('data', function (data) {
        console.log('YAY, just the data I wanted!', data);
      });
  });
  busboy.on('finish', function() {
    console.log('Done parsing form!');
    res.end();
  });
  req.pipe(busboy);
}
Run Code Online (Sandbox Code Playgroud)