简体   繁体   中英

How to delete local file with fs.unlink?

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

ERROR MESSAGE IN CONSOLE/TERMINAL:

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

SITUATION

I must have specified the wrong path. I don't understand why it would be wrong, the " public " folder is at the same level as the " app.js " file. The " upload.js " is in a folder called " routes " which is at the same level as " app.js ".

And I have specified a route "/public" to my public folder in my app.js:

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

QUESTION:

What have I done wrong ?

I bet you want to delete file inside project directory. Try with this (dot before "/"):

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

You missed a part of the path. What you're showing is not enough, but it can be fixed in the following way:

For example, the path I got of a file is the following:

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

But actually the path is

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

Here, the "MEANCourse" is my project name, and "backend" is the top-level folder name as "src", but when the path was produced automatically, the top-level folder was ignored .

So I added "backend" to the path, and it started to work.

You have to find out what part is missing in your case.

You do not need to use c:\\ for you may not be in the windows environment. Also, you may be finally executing this in cloud etc. Instead, use a relative directory by using __dirname . Like, if using backtick, do ${__dirname} then add the rest of the directory, relative to the javascript file your code is in.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM