2017-02-07 2 views
1

Я могу использовать nodejs для успешной загрузки файла с сервера на клиент, если все правильно.Nodejs скачать файл ошибки обработки

Но если произошла ошибка, Я хочу просто вернуть сообщение об ошибке. Но теперь я получаю загруженный файл abc.txt, содержащий ошибку json. Как это исправить?

//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); 
}); 

ответ

2

Вы уже установили заголовки содержимого и содержимого в объект ответа. Если вы хотите вернуть err как json, затем удалите заголовок содержимого и установите тип содержимого application/json перед вызовом res.send(err);