我在Node/Express中有以下代码,它将文件作为响应发送,然后使用超时删除该文件。
res.sendFile(req.params.id, { root: process.env.UPLOADPATH });
setTimeout(function () {
if (fs.existsSync(process.env.UPLOADPATH + req.params.id)) { // check to ensure file still exists on file system
fs.unlink(process.env.UPLOADPATH + req.params.id); // delete file from server file system after 60 seconds
}
}, 60000);
如果我不使用
setTimeout
,它会报错。我猜测Express是异步执行sendFile
,因此在实际发送文件之前将其删除了。但是,有没有更好的方法呢?是否有一种方法可以检查文件何时已发送,以便安全删除它?也许像
sendFile
回调这样的东西?
app.get
函数内运行这个吗? - Charlie Fish