nodejs,connect-busboy。 上传几个文件

当通过公务员上传less量文件时,遇到事件问题。 我的代码:

app.post('/multiupload', function(req, res) { var fstream; var files = []; var busboy = new Busboy({headers: req.headers}); busboy.on('file', function (fieldname, file, filename) { fstream = fs.createWriteStream(__dirname + '/../static/uploaded/' + filename); file.pipe(fstream); fstream.on('close', function(){ console.log('file ' + filename + ' uploaded'); files.push(filename); }); }); busboy.on('end', function(){console.log('END')}); busboy.on('finish', function(){ console.log('finish, files uploaded ', files); res.redirect('back'); }); req.pipe(busboy); }); 

我的表单(Jade模板)

 form(method="POST", action="/multiupload" name="multiupload_form", enctype="multipart/form-data") input(type='file' name='multifile', multiple) input(type="submit" value="Upload!") 

事件“结束”只是忽略,在file upload中间完成。 我错在哪里?

服务器控制台报告

 file 111.gz uploaded file 222.mp4 uploaded file 333.jpg uploaded finish, files uploaded [ '111.gz', '222.mp4', '333.jpg' ] file 444 uploaded file 555.jpg uploaded 

       

网上收集的解决方案 "nodejs,connect-busboy。 上传几个文件"

busboy不排出end事件。 一旦整个请求处理完毕,所有filestream都被完全读取, finish事件就会发出。 所以问题在于底层文件描述符的closures发生在下一个打勾(或者这样)之后发生。

如果你需要知道什么时候所有的文件描述符都closures了,那么你需要想出一个跟踪有多lessclose事件发出的方法。