node.js – 如果mime类型无效,如何在busboy中停止上传和重定向?

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

如果mimetype有效,一切正常,但如果不是,我无法重定向,浏览器只是悬挂,最终超时.
我对它的理解是浏览器不想重定向,因为它正在等待上传完成,但是如何在我的js代码中取消上传?
我可以解决这个问题并编写文件,然后删除它,如果它不是正确的mimetype,但我认为这样做有点愚蠢,我宁愿找到一种方法来触发一个事件,它将停止它并立即重定向.
这是我的应用代码的一个片段:

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的文档中,如果你认为有人可能有兴趣从谷歌搜索中找到这个答案你可以让它解决,否则随时关闭/删除这篇文章.

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

file.resume();

在重定向到错误页面之前.

转载注明原文:node.js – 如果mime类型无效,如何在busboy中停止上传和重定向? - 代码日志