我正在使用ExpressJS创建REST后端。后端的一部分允许用户上传文件资产,该资产应该只存在10分钟。
使用setTimeout
安全地在10分钟后删除文件,或者在NodeJS中有更好的方法吗?如何确保删除文件?这是我目前的解决方案:
router.post('/upload', fileUpload.single('asset'), (req, res) => {
// Do something with the file
res.status(201).end();
setTimeout(() => {
// Delete the file
}, 600000);
});
答案 0 :(得分:0)
您的方法不会扩展,因为它可能会产生大量延迟方法。更好的方法是将有关文件的信息存储到某个关联数组(对象)中,例如:
{ "path":"date_uploaded" }
如果有任何需要使用setInterval()删除的内容,请检查每个,比方说XX秒。即浏览整个结构,看看是否有超过10分钟前创建的任何标志。对于所有这些元素,您删除该文件并将其从数组中删除。
var pending = {};
router.post('/upload', fileUpload.single('asset'), (req, res) => {
// Do something with the file
pending[file_name] = (new Date()).getTime();
res.status(201).end();
});
setInterval(
function(){
// check each element of pending and see if it needs to be deleted
}, 30000);