我对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: " + …Run Code Online (Sandbox Code Playgroud)