如果一切正常,我可以使用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);
});
答案 0 :(得分:2)
您已经在响应对象上设置了内容类型和内容处置标头。如果要将err作为json返回,请在调用application/json
之前删除content-disposition标头并将内容类型设置为res.send(err);