从NodeJS中的文件阅读后无法删除excel文件

xyhw6mcr  于 2022-12-12  发布在  Node.js
关注(0)|答案(1)|浏览(147)

我将文件托管在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);
                  }
            }
        }

我在上面的代码中做错了什么,有人让我知道。

bsxbgnwa

bsxbgnwa1#

您不需要在本地机器上创建文件,直接将文件Array Buffer发送到xlsx,如link here中所述

相关问题