web-dev-qa-db-fra.com

Comment supprimer un fichier local avec 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');                                
        }
});

MESSAGE D'ERREUR DANS LA CONSOLE/TERMINAL:

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

[[# # ~] situation [~ # ~]

Je dois avoir spécifié le mauvais chemin. Je ne comprends pas pourquoi ce serait faux, le dossier "public" est au même niveau que le dossier "app.js ". Le fichier" upload.js "se trouve dans un dossier appelé" routes "qui est au même niveau que" app.js ".

Et j'ai spécifié une route "/ public" vers mon dossier public dans mon app.js:

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

QUESTION:

Qu'est ce que j'ai mal fait ?

8
Coder1000

Je parie que vous souhaitez supprimer le fichier dans le répertoire du projet. Essayez avec ceci (point avant "/"):

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

Vous avez manqué une partie du chemin. Ce que vous montrez ne suffit pas, mais il peut être résolu de la manière suivante:

Par exemple, le chemin que j'ai obtenu d'un fichier est le suivant:

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

Mais en réalité, le chemin est

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

Ici, le "MEANCourse" est le nom de mon projet, et "backend" est le nom du dossier de niveau supérieur en tant que "src", mais lorsque le chemin a été produit automatiquement, le dossier de niveau supérieur a été ignoré.

J'ai donc ajouté "backend" au chemin, et cela a commencé à fonctionner.

Vous devez savoir quelle partie manque dans votre cas.

0
William Hou