删除后文件保留在我的文件夹中,但在重新启动 Node JS 后删除
File stay in my folder after deleting but deleted after restart Node JS
我有一个循环遍历包含文件路径的数组的函数,然后删除每个文件。
这些文件使用 Multer 上传到文件夹“assets/temp/”
这是我使用 fs 的删除方法:
exports.unlinkFiles = (filesPathsArr) => {
try {
filesPathsArr.forEach((filePath) => {
if (fs.existsSync(filePath)) {
fs.unlinkSync(filePath)
console.log('File deleted : ', filePath)
}
})
} catch (error) {
throw error
}
}
我的输入例如:
['assets\temp\pexelsphoto19886811645117462309.jpg', 'assets\temp\relaxtriptest1645118333937.mp3']
我的输出:
File Deleted : assets\temp\pexelsphoto19886811645117462309.jpg
File Deleted : assets\temp\relaxtriptest1645118333937.mp3
但在我的临时文件夹中:
+ 如果我尝试打开文件,它会显示 'Enable to read..'
+ 当我重新启动服务器时,文件就消失了
这只是我机器的本地问题吗,也许这个问题会在生产中消失?或者这只是一个我不应该担心的小细节?还是其他原因?
我解决了问题!
用Multer上传文件后,我将它上传到AWS S3。
但问题是,如果AWS代码有错误,那么我会抛出异常,然后从临时目录中删除上传的文件。但是通过这样做,我没有让 AWS 函数完成,所以读取流仍然打开。
然后解决方案是myReadStreamCreated.destroy()
在函数的末尾,也在try catch bloc的catch中,如果抛出异常,让fs.unlink能够删除文件正确。
我有一个循环遍历包含文件路径的数组的函数,然后删除每个文件。 这些文件使用 Multer 上传到文件夹“assets/temp/” 这是我使用 fs 的删除方法:
exports.unlinkFiles = (filesPathsArr) => {
try {
filesPathsArr.forEach((filePath) => {
if (fs.existsSync(filePath)) {
fs.unlinkSync(filePath)
console.log('File deleted : ', filePath)
}
})
} catch (error) {
throw error
}
}
我的输入例如:
['assets\temp\pexelsphoto19886811645117462309.jpg', 'assets\temp\relaxtriptest1645118333937.mp3']
我的输出:
File Deleted : assets\temp\pexelsphoto19886811645117462309.jpg
File Deleted : assets\temp\relaxtriptest1645118333937.mp3
但在我的临时文件夹中:
+ 如果我尝试打开文件,它会显示 'Enable to read..'
+ 当我重新启动服务器时,文件就消失了
这只是我机器的本地问题吗,也许这个问题会在生产中消失?或者这只是一个我不应该担心的小细节?还是其他原因?
我解决了问题!
用Multer上传文件后,我将它上传到AWS S3。
但问题是,如果AWS代码有错误,那么我会抛出异常,然后从临时目录中删除上传的文件。但是通过这样做,我没有让 AWS 函数完成,所以读取流仍然打开。
然后解决方案是myReadStreamCreated.destroy()
在函数的末尾,也在try catch bloc的catch中,如果抛出异常,让fs.unlink能够删除文件正确。