busboy不发射结束事件

我试图从我的路线传递一个请求对象到一个处理上传的控制器,

这里是路线 –

app.post('/upload/notes',auth.requiresApiLogin,function(req,res){ upload.file(req,res); }); 

这里是带有导出文件方法的控制器(upload.js)代码

 var fs = require('fs'), uuid = require('node-uuid'), path = require('path'), Busboy = require('busboy'); exports.file = function(req, res) { var busboy = new Busboy({ headers: req.headers}); busboy.on('file', function(fieldname, file, filename,transferEncoding,mimeType) { console.log("inside upload function"); console.log(file); }); busboy.on('field', function(fieldname, val, valTruncated,keyTruncated) { console.log("inside field function"); console.log(fieldname); }); busboy.on('finish',function(){ console.log('finished'); }); req.pipe(busboy); // // req.pipe(req.busboy); // req.busboy.on('file', function(fieldname, file, filename,transferEncoding,mimeType) { // var fName = uuid.v4(); // console.log(filename); // var fileext = filename.substr(filename.lastIndexOf('.') + 1); // // console.log(transferEncoding); // console.log(mimeType); // var filepath = path.normalize(__dirname + '/../../'); // var fstream = fs.createWriteStream(filepath+'/server/uploads/'+fName+'.'+fileext); // file.pipe(fstream); // fstream.on('close', function () { // res.redirect('back'); // }); // }); }; 

所以,我看到的字段和文件都在控制台中logging,但完成事件没有被解雇。 还有什么我应该尝试?

您需要以某种方式使用filestream。 出于testing目的,您可以通过添加file.resume();来忽略数据file.resume(); 在文件事件处理程序中。

我的理解是。 完成事件将触发文件和现场事件完成后? 他们的任何其他事件将在现场和文件事件完成后触发。 所有事件完成后,我需要将响应发送给客户端。

这是非常关键的一个。 请告诉我