Node.js 一段时间后从节点服务器自动删除文件
我正在做一个文件转换器。 首先,我从用户那里获取一个文件,并将其保存到节点服务器的uploads文件夹中,转换后,我将其保存到download文件夹中。 当文件被转换时,我会使用fs.unlink从文件夹中删除上载的文件,但转换5000 ms后,我会从下载文件夹中删除该文件,但问题是同时有多个用户上载该文件 它无法从下载文件夹中删除第二个用户的文件,它显示一条错误消息Node.js 一段时间后从节点服务器自动删除文件,node.js,express,fs,Node.js,Express,Fs,我正在做一个文件转换器。 首先,我从用户那里获取一个文件,并将其保存到节点服务器的uploads文件夹中,转换后,我将其保存到download文件夹中。 当文件被转换时,我会使用fs.unlink从文件夹中删除上载的文件,但转换5000 ms后,我会从下载文件夹中删除该文件,但问题是同时有多个用户上载该文件 它无法从下载文件夹中删除第二个用户的文件,它显示一条错误消息 [Error: ENOENT: no such file or directory, unlink 'downloads/161
[Error: ENOENT: no such file or directory, unlink 'downloads/1617962744875.yml'] {
errno: -2,
code: 'ENOENT',
syscall: 'unlink',
path: 'downloads/1617962744875.yml'
}
代码:
var path = require('path')
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/')
},
filename: function (req, file, cb) {
cb(null, Date.now() + path.extname(file.originalname)) //Appending extension
}
})
app.post("/upload", upload.array("files"), uploadFiles);
const uploadFiles = async (req, res) => {
const file = await req.files[0];
postmanCollection = file.path;
outputFile = `downloads/${file.filename.slice(0, -5)}.yml`
await convert();
await fs.unlink(file.path, err => {
if (err) {
console.log('error in deleting a file from uploads')
} else {
console.log('succesfully deleted from the uploads folder')
}
})
res.json(file);
}
const convert = async () => {
try {
let result = // doing my conversion over here
setTimeout(() => {
fs.unlink(outputFile, err => {
if (err) {
console.log(err)
} else {
console.log('succesfully deleted from the downloads folder')
}
})
}, 5000)
} catch (err) {
console.log(err)
}
}
任何人都可以帮我做这件事。这是我的建议
请澄清你的问题。当两个不同的用户以完全相同的名称上传文件时,您的失败似乎就发生了。是这样吗?不,当两个用户同时上传一个文件时。它只删除第一个下载的文件,然后对于第二个用户,它再次尝试删除第一个下载的文件(5秒后已删除)。无法更新第二个下载文件的名称,因为第二个用户未得到更新。这有意义吗