【发布时间】:2021-10-08 13:38:37
【问题描述】:
我已将 multer 设置为将图像存储在临时文件夹中,通过 POST 请求将其发送到 Imgur,然后 POST 请求通过 fs.unlink('path') 将其从文件夹中删除。我担心会发生未知错误或崩溃或某些事情,并且一堆图像会卡在临时文件夹中。我可以到处设置一堆fs.unlink,但我想知道是否有办法设置multer,以便在x 时间后删除文件。
这是我的 multer 设置的样子:
const storage = multer.diskStorage({
destination: './public/uploads/',
filename: function(req, file, cb){
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
}
});
// Init Upload Multer
const upload = multer({
storage: storage,
limits:{fileSize: 20000000},
fileFilter: function(req, file, cb){
checkFileType(file, cb);
}
//Do some function here?
}).single('myImage');
这是基本的 POST:
app.post('/upload-image', (req, res) => {
upload(req, res, (err) => {
if (err) {
console.log(err)
} else {
if (req.file == undefined) {
console.log('Error: No File Selected')
} else {
imgur
.uploadFile(`./public/uploads/${req.file.filename}`)
.then((json) => {
//I do some stuff with the json and mongodb then:
fs.unlink(`./public/uploads/${req.file.filename}`, (err) => {
if (err) {
console.error(err)
return
}
console.log('file deleted')
})
})
.catch((err) => {
console.error(err.message);
});
}
}
});
})
有什么想法可以确保我不会在临时文件夹中获得一堆额外的图像吗?
【问题讨论】:
-
最简单的方法是 1) 使用一些前缀设置文件名,指示文件的创建时间 2) 有一个计划/cron 作业将检查临时文件夹,并删除基于那个前缀
-
@PK214 你知道任何关于创建计划/cron 作业的好教程吗?