如果mimetypes无效,如何停止上传和redirect到busboy?

我对Node.js相当陌生,我使用Express和Busboy-Connect来创build一个简单的file upload表单,仅用于wav文件。 这是我想要做的: – 开始上传 – 如果mimetype不是wav,则redirect到错误页面 – 否则:在服务器上写入文件并重新导向回去。

如果mimetype是有效的,一切正常,但如果不是,我不能redirect,浏览器只是挂起,最终超时。 我的理解是,浏览器不想redirect,因为它正在等待上传完成,但我怎样才能取消上传,然后在我的js代码? 我可以解决这个问题,然后编写文件,然后删除它,如果它不是正确的mimetype,但我认为这样做有点愚蠢,我宁愿find一种方法来触发事件,将立即停止和redirect。 这是(我的应用程序代码片段):

app.get('/', function (req, res) { res.render(__dirname + '/public/index.ejs', {error: 0}); }); app.get('/error', function (req, res) { res.render(__dirname + '/public/index.ejs', {error: 1}); }); app.post('/upload', function (req, res) { var timestamp = new Date().getTime().toString(); //console.log(timestamp); var fstream; req.pipe(req.busboy); req.busboy.on('file', function (fieldname, file, filename, encoding, mimetype) { if ("audio/wav" != mimetype) { console.log("invalid mimetype"); // that prints ok // req.busboy.end(); // I tried that but it doesn't work res.redirect('/error'); } else { console.log("Uploading: " + mimetype); fstream = fs.createWriteStream(__dirname + '/tmp/' + timestamp + filename); file.pipe(fstream); fstream.on('close', function () { res.redirect('back'); }); } }); }); 

任何人都可以指向正确的方向吗? 感谢您的帮助 !

好吧,我在npm的文档中发现它,如果你认为有人可能有兴趣从谷歌searchfind这个答案,你可以解决它,否则随时closures/删除这个职位。

基本上在文件stream上有一个函数需要调用来解锁busboy,所以我所要做的工作就是添加

 file.resume(); 

在redirect到错误页面之前。