Sails.js Skipper: How to read the uploaded file stream during upload?

孤街醉人 提交于 2019-12-23 19:19:34

问题


I am using sails version 0.11 which comes bundled with skipper for file uploads. I need to upload big files of over 100 MB in size at least.

Now I don't want the file upload to complete before I start further processing of the file on server. I want to read the file stream while it is being uploaded. Here is how I am trying to achieve the same:

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

}

But my logs only show up the end event and no data event is being captured. I read in the documentation that req.file("filename") will return stream of file streams. But how do I access the particular file stream I need since I am only uploading a single file?


回答1:


Just published skipper-csv ;)

npm install skipper-csv --save

Use it the same way you would use other adapters. It uses csv-parse to do the actual parsing. You typically pass csv-parse options to the upload function. Additionally you pass the rowHandler function that is called for each parsed row. The fd (file descriptor) is also passed in case you are uploading multiple files at the same time. Here is an example:

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

});


来源:https://stackoverflow.com/questions/32864625/sails-js-skipper-how-to-read-the-uploaded-file-stream-during-upload

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!