我将文件托管在S3存储桶上,在axios请求的帮助下,我从S3存储桶获取Excel文件,然后在本地文件系统中写入Excel文件。之后,我将Excel文件数据转换为JSON,并将其作为响应发送,因为我正在使用XLSX
库。
我的问题是,在将Excel文件数据作为JSON响应发送后,我想从本地文件系统中删除该Excel文件。
当我试图删除文件时,它无法删除,也无法读取文件。但当文件已经可用时,它也会阅读文件并发送响应。
下面是我的代码:
const response = await axios.get(data.me_url, { responseType: 'arraybuffer' });
if (response) {
const ostream = await fs.createWriteStream(`./${filename}`, 'binary');
ostream.write(response.data);
ostream.end();
const file = xlsx.readFile(`./${filename}`);
const sheetNames = file.SheetNames;
const totalSheets = sheetNames.length;
let parsedData = [];
for (let i = 0; i < totalSheets; i++) {
const tempData = xlsx.utils.sheet_to_json(file.Sheets[sheetNames[i]]);
tempData.shift();
parsedData.push(...tempData);
}
if (parsedData.length > 0) {
console.log('if filename',filename);
try {
fs.unlinkSync(`./${filename}`);
console.log("Delete File successfully.");
return res.status(200).send({ 'data': parsedData, 'message': 'Success', 'code': 200 });
} catch (error) {
console.log(error);
}
}
}
我在上面的代码中做错了什么,有人让我知道。
1条答案
按热度按时间bsxbgnwa1#
您不需要在本地机器上创建文件,直接将文件Array Buffer发送到xlsx,如link here中所述