如何使用 fs.unlink 删除本地文件?

Posted

技术标签:

【中文标题】如何使用 fs.unlink 删除本地文件?【英文标题】:How to delete local file with fs.unlink? 【发布时间】:2017-05-15 15:53:08 【问题描述】:

代码:

fs.unlink("/public/images/uploads/"+req.file.filename, (err) => 
        if (err) 
            console.log("failed to delete local image:"+err);
         else 
            console.log('successfully deleted local image');                                
        
);

控制台/终端中的错误消息:

failed to delete local image:Error: ENOENT: no such file or directory, unlink '/public/images/uploads/ed6d810405e42d0dfd03d7668e356db3'

情况

我一定是指定了错误的路径。我不明白为什么会出错,“public”文件夹与“app.js”文件处于同一级别。 “upload.js”位于与“app.js”处于同一级别的名为“routes”的文件夹中。

我已经在我的 app.js 中指定了一条到我的公共文件夹的路由“/public”:

//Static Folder
app.use("/public",express.static(path.join(__dirname, "/public")));

问题:

我做错了什么?

【问题讨论】:

这个文件真的存在吗?在错误描述中它没有扩展。这不完全是个问题,但有点不常见 @RômuloM.Farias 是的,它是以二进制形式保存的图像。 【参考方案1】:

我打赌你想删除项目目录中的文件。试试这个(“/”前的点):

fs.unlink("./public/images/uploads/"+req.file.filename, (err) => 
        if (err) 
            console.log("failed to delete local image:"+err);
         else 
            console.log('successfully deleted local image');                                
        
);

【讨论】:

【参考方案2】:

您错过了路径的一部分。您显示的内容还不够,但可以通过以下方式修复:

例如,我得到的文件路径如下:

 'C:\001-Training\MEANCourse\http:\localhost:3000\images\1-1571080310351.jpeg'

但实际上路径是

 'C:\001-Training\MEANCourse\http:\localhost:3000\backend\images\1-1571080310351.jpeg'

这里“MEANCourse”是我的项目名称,“backend”是顶层文件夹名称为“src”,但是自动生成路径时,顶层文件夹被忽略了强>。

所以我在路径中添加了“后端”,它开始工作了。

您必须找出您的案例中缺少的部分。

【讨论】:

【参考方案3】:

您不需要使用c:\,因为您可能不在windows环境中。此外,您可能最终会在云等中执行此操作。相反,通过使用__dirname 来使用相对目录。就像,如果使用反引号,请执行 $__dirname 然后添加目录的其余部分,相对于您的代码所在的 javascript 文件。

【讨论】:

以上是关于如何使用 fs.unlink 删除本地文件?的主要内容,如果未能解决你的问题,请参考以下文章

nodejs删除安卓手机指定文件

如何异步删除多个文件?

nodejs 学习

node 删除文件 和文件夹

nodejs之fs模块

Node.js——fs模块(文件系统),创建删除目录(文件),读取写入文件流