gpt4 book ai didi

javascript - Nodejs 文件在发送响应之前被删除(res.send)

转载 作者:行者123 更新时间:2023-12-01 00:15:59 25 4
gpt4 key购买 nike

这里的问题是文件在向客户端发送响应之前从服务器中删除,并显示错误,因为该路径上没有图像。

 // Here some code 
res.status(200).sendFile(path.join(__dirname, "../../image", `/${response.id}.png`));

// Delete image from server
fs.unlink(imagePath, function (err) {
if (err) throw err;
console.log('File deleted!');
})

最佳答案

您需要监视对 res.sendFile() 的回调,以便知道发送何时实际完成,然后才能安全地删除文件。

res.sendFile() 是异步的,因此它在作业完成之前返回,因此您在 res.sendFile() 完成之前删除了文件。使用回调来了解它何时实际完成。

   let fname = path.join(__dirname, "../../image", `/${response.id}.png`);
res.status(200).sendFile(fname, err => {
if (err) {
console.log(err);
res.sendStatus(500);
}
fs.unlink(fname, function(err) => {
// log any error
if (err) {
console.log(err);
}
});
});

注意:当您将回调传递给 res.sendFile() 时,您必须手动处理错误条件并发送错误响应、重试、发送替代内容等...以发送一些内容适当的回应。

我还想知道为什么您要发送一个文件名并尝试删除另一个文件名。对要发送的文件名和要删除的文件名使用相同的局部变量不是有意义吗?

关于javascript - Nodejs 文件在发送响应之前被删除(res.send),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59759842/

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