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
busboy
不排出end
事件。 一旦整个请求处理完毕,所有file
stream都被完全读取, finish
事件就会发出。 所以问题在于底层文件描述符的closures发生在下一个打勾(或者这样)之后发生。
如果你需要知道什么时候所有的文件描述符都closures了,那么你需要想出一个跟踪有多lessclose
事件发出的方法。