【发布时间】:2022-02-18 03:31:21
【问题描述】:
我有一个函数循环遍历包含文件路径的数组,然后删除每个文件。 这些文件与 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
但在我的文件夹 temp 中:
+ 如果我尝试打开文件,它会显示“启用读取..”
+ 当我重新启动服务器时,文件就消失了
这只是我机器的本地问题,也许问题会在生产中消失?或者也许这只是一个我不应该担心的小细节?还是别的什么?
【问题讨论】:
-
您是否通过终端验证文件存在?您的 IDE 可能只是提供帮助。
-
是的,我检查过,该文件确实存在于我磁盘上的文件夹中,但是当我尝试打开它时,文件似乎已损坏,一开始似乎无法完全删除它。
-
您是否尝试过使用 fs.unlinkSync 的异步版本?喜欢:
var fs = require('fs'); fs.unlink('C:\path\to\my\file\test1.txt', (err) => {}); -
是的,我试过了,没有错误,它只是返回
console.log('File deleted', filePath) -
嗯。我目前的理论是这与此有关:stackoverflow.com/a/32773995/3597730
标签: javascript node.js fs