Sails.js船长:上传时如何读取上传的文件流?
Sails.js Skipper: How to read the uploaded file stream during upload?
我正在使用 sails 版本 0.11,它与用于文件上传的 skipper 捆绑在一起。我至少需要上传超过 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("filename")
将 return 流文件流。但是,由于我只上传了一个文件,我该如何访问我需要的特定文件流呢?
刚刚发布 skipper-csv ;)
npm install skipper-csv --save
像使用其他适配器一样使用它。
它使用 csv-parse 进行实际解析。您通常将 csv-parse 选项传递给上传函数。此外,您还传递了为每个已解析的行调用的 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
});
});
我正在使用 sails 版本 0.11,它与用于文件上传的 skipper 捆绑在一起。我至少需要上传超过 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("filename")
将 return 流文件流。但是,由于我只上传了一个文件,我该如何访问我需要的特定文件流呢?
刚刚发布 skipper-csv ;)
npm install skipper-csv --save
像使用其他适配器一样使用它。 它使用 csv-parse 进行实际解析。您通常将 csv-parse 选项传递给上传函数。此外,您还传递了为每个已解析的行调用的 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
});
});