gpt4 book ai didi

javascript - 如何清理 Firebase Cloud Functions 中的临时文件

转载 作者:行者123 更新时间:2023-11-30 19:32:22 25 4
gpt4 key购买 nike

我正在尝试使用云函数处理两个具有相同名称(并且不可交换)的不同图像。该功能被触发仅处理一个图像,第二个图像也发生同样的情况。问题是我无法删除临时文件,因此无法保存第二张图片,因为它具有相同的路径和相同的名称。我使用 fs.unlinkSync() 清除临时文件夹,但这不起作用。这是代码:

exports.thumb= functions.database.ref('/{uid}/upload')

.onUpdate(async (change, context) => {


const fileName = "RawImage.jpg";
const userId = context.auth.uid;
const bucket = storage.bucket("-----");
const workingDir = path.join(os.tmpdir(), "thumbs");
const tempFilePath = path.join(workingDir, fileName);
const filePath = path.join(userId,fileName);

await fs.ensureDir(workingDir);

await bucket.file(filePath).download({destination: tempFilePath});

const thumbFileName = `thumb_${fileName}`;
const thumbFilePath = path.join(userId, thumbFileName);
const out = path.join(workingDir, thumbFileName);


const uploadPromises = async () => {

await sharp(tempFilePath)
.resize(300, 200)
.grayscale()
.toFile(out);

return await bucket.upload(out, {
destination: thumbFilePath,
});

}

const v = await uploadPromises();


return fs.unlinkSync(workingDir);

});

最后一行用于清除存储临时文件的工作目录,但这不起作用(处理第二张图像,总是返回第一张图像)。我什至尝试过 fs.unlincSync() 单个文件,但没有用。

最佳答案

fs.unlinkSync() 仅适用于单个文件。它不适用于整个目录。您在目录类型的文件上调用它,这是行不通的。

您有很多删除整个目录的选项。此问题列出了您的一些选项:Remove directory which is not empty

关于javascript - 如何清理 Firebase Cloud Functions 中的临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56297980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com