Nodejs下载文件error handling

如果一切正常,我可以使用nodejs成功将文件从服务器下载到客户端。

但是如果发生错误,我只想返回错误信息。 但是我现在得到的是一个包含错误json的下载文件abc.txt。 如何解决这个问题?

//server side code, get like /download?filename=abc.txt app.get('/download', function(req, res){ var filename_para = req.query.filename; // abc.txt if( filename_para == undefined) { console.log('no filename provided'); res.send('no filename provided');// this works return; } var file = __dirname + '/uploads/' + filename_para; var filename = path.basename(file); var mimetype = mime.lookup(file); res.setHeader('Content-disposition', 'attachment; filename=' + filename); res.setHeader('Content-type', mimetype); var filestream = fs.createReadStream(file); filestream.on('error', function(err) { console.log('error '+err); // filestream.close(); res.send(err);// this error is in abc.txt??? }); filestream.on('finish', function() { console.log('finish'); }); filestream.pipe(res); }); 

您已经在响应对象上设置了内容types和内容处置标头。 如果你想把err作为json返回,那么在调用res.send(err);之前,删除content-disposition头并将content-type设置为application/json res.send(err);