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

时间:2016-12-31 20:45:27

标签: javascript node.js fs

CODE:

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"位于名为" routes"的文件夹中与" app.js"。

处于同一级别

我已经指定了一条路线" / public"到我的app.js中的公共文件夹:

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

问题:

我做错了什么?

3 个答案:

答案 0 :(得分:20)

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

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');                                
        }
});

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

 '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”,但是当自动生成路径时,顶级文件夹被忽略了

因此,我在路径中添加了“后端”,它开始起作用。

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