Я успешно создаю файл excel с excel4node и сохраняю его на сервере, затем использую поток чтения для отправки файла клиенту:
res.set({
'Content-Type': 'application/vnd.openxmlformats',
'Content-Disposition': 'attachment; filename='+filename
});
// This line opens the file as a readable stream
var readStream = fs.createReadStream(path+filename, {encoding: 'utf8'});
// This will wait until we know the readable stream is actually valid before piping
readStream.on('open', function () {
// This just pipes the read stream to the response object (which goes to the client)
readStream.pipe(res);
});
// This catches any errors that happen while creating the readable stream (usually invalid names)
readStream.on('error', function(err) {
res.end(err);
});
После этого я получаю данные в браузере и загрузить его с помощью Blob:
var blob = new Blob([data], { type: 'application/vnd.openxmlformats' });
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = "File.xlsx";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
Когда я пытаюсь открыть файл, я получаю следующее сообщение:
"Excel found unreadable content in 'File.xlsx'. Do you want to recover the contents of this workbook? If you trust the source of this workbook, click Yes"
И если я нажимаю да, Excel говорит, что файл поврежден и не может быть восстановлено.
Я хотел бы знать, что я могу сделать, чтобы получить файл Excel с сервера.