Я новичок в nodejs и мне нужно знать, как обслуживать файл xls, используя Node js из буфера вместо фактического сохранения файла в каталоге пути сервера. Я установил пакет xlsx для генерации Excel.
Express имеет опцию загрузки, которая позволяет мне передавать файл из каталога сервера и загружать его в браузере.
const express = require('express');
const app = express();
var fs = require('fs');
var xlsx = require('xlsx');
app.get('/download', async function (req, res) {
let path = 'documents/';
let fileName = 'data.xlsx';
let fullPath = path+fileName;
await generateFile(fullPath);
res.download(fullPath,fileName, function (err) {
if (err) {
console.log('error : '+err);
} else {
console.log('Downloaded file successfully');
//Remove the file from document directory
fs.unlink(fullPath, (err) => {
if (err) {
console.error(err)
return
}
});
}
})
});
async function generateFile(fileName){
let data=[[ "S", "h", "e", "e", "t", "J", "S" ],[ 1 , 2 , 3 , 4 , 5 ]];
let workSheet = xlsx.utils.aoa_to_sheet(data);
let workBook = xlsx.utils.book_new();
xlsx.utils.book_append_sheet(workBook,workSheet,'My Sheet');
xlsx.writeFile(workBook,fileName);
}
app.listen(8081,()=>{
console.log('Server is running on port 8081');
});
В приведенном выше коде я делаю четыре шага. 1. Сгенерируйте файл 2. Запишите его на серверный путь 3. Отправьте файл в браузер для загрузки. 4. Удалите файл из пути.
Есть ли способ избежать шага 2 и шага 4? Мне нужно сгенерировать файл, может быть, сохранить его в буфере и скачать его в браузере. Или есть лучший способ. Пожалуйста, предоставьте предложения.
Заранее спасибо