Node.js 如何在上传过程中读取上传的文件流?

Node.js 如何在上传过程中读取上传的文件流?,node.js,file-upload,sails.js,skipper,Node.js,File Upload,Sails.js,Skipper,我使用的是与skipper捆绑在一起的sails版本0.11,用于文件上传。我需要上传的大文件超过100 MB的大小至少 现在,我不希望在服务器上开始进一步处理文件之前完成文件上载。我想在上传文件流时读取它。以下是我如何努力实现同样的目标: var csv = require("fast-csv"); bulk: function (req, res){ function parseEntry(entry){ return entry } var inputStrea

我使用的是与skipper捆绑在一起的sails版本0.11,用于文件上传。我需要上传的大文件超过100 MB的大小至少

现在,我不希望在服务器上开始进一步处理文件之前完成文件上载。我想在上传文件流时读取它。以下是我如何努力实现同样的目标:

var csv = require("fast-csv");

bulk: function (req, res){

  function parseEntry(entry){
    return entry
  } 

  var inputStream = req.file('employees');
  var csvStream = csv();
  inputStream.pipe(csvStream); 

  csvStream.on("data", function (data){
    count++
    // skip invalid records
    var parsedData = parseEntry(data);
    console.log(parsedData);
  });

  csvStream.on("end", function(){
    // console.log("total time taken in minutes:", timeTaken);
    return res.json(200, {"status": 1, "message": "successfully uploaded the file"});
  });

}
但是我的日志只显示结束事件,没有捕获数据事件。我在文档中读到
req.file(“文件名”)
将返回文件流的流。但是,由于我只上传一个文件,如何访问我需要的特定文件流呢

刚刚发布;)

使用它的方式与使用其他适配器的方式相同。 它用于执行实际的解析。您通常会将csv解析选项传递给upload函数。此外,还将传递为每个解析的行调用的rowHandler函数。如果同时上载多个文件,也会传递fd(文件描述符)。以下是一个例子:

req.file('files').upload({
  adapter: require('skipper-csv'),
  csvOptions: {delimiter: ',', columns: true},
  rowHandler: function(row, fd){
    console.log(fd, row);
  }
}, function (err, files) {
  if (err)
    return res.serverError(err);

  return res.json({
    message: "Uploaded " + files.length + " CSV files!",
    files: files
  });

});

可能是因为Skipper用户streams 2,而您的cvsStream使用旧式streamI也有同样的问题,您是否将csv解析为流?没有。我们没有达到文件大小超过几MB的情况。如果我回到这个问题,并解决它有一天,我会更新这个线程,确保最终做到了这一点,只是写了斯基普csv模块,请保持关注,我会推动它很快!
req.file('files').upload({
  adapter: require('skipper-csv'),
  csvOptions: {delimiter: ',', columns: true},
  rowHandler: function(row, fd){
    console.log(fd, row);
  }
}, function (err, files) {
  if (err)
    return res.serverError(err);

  return res.json({
    message: "Uploaded " + files.length + " CSV files!",
    files: files
  });

});