Я делаю загрузку файла с помощью window.open (из jsx-файла React):
function downloadFile(documentName, event) {
var response = window.open('/downloadViewDocument/'+ documentName, "_self");
}
А из узла / экспресса я возвращаю файл примерно так:
var document = __dirname + "/../../attachments/" + req.params.documentName.trim();
fs.stat(document, function(err, stat) {
if(err == null) {
console.log('File exists');
res.setHeader("Content-Disposition","attachment; filename=\"" + req.params.documentName.trim() + "\"");
var filestream = fs.createReadStream(document);
filestream.pipe(res);
} else if(err.code == 'ENOENT') {
// file does not exist
**res.json({success: true, msg: 'File Does Not Exist!'});**
} else {
**res.json({success: true, msg: 'Error Occured, Please Try Again!'});**
}
});
Обратите внимание, что в приведенном выше коде в случае ошибки я возвращаю объект JSON. Если файл найден, он загружается. Но в случае, если файл не найден, я хочу прочитать из msg и показать правильное сообщение об ошибке пользователю. Я не вижу никакой опции в window.open, чтобы прочитать ответ обратно.Есть ли другой способ?