web-dev-qa-db-ja.com

fs.unlinkでローカルファイルを削除する方法は?

コード:

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'

[〜#〜] situation [〜#〜]

間違ったパスを指定したに違いありません。 「public」フォルダーが「app.js」ファイルと同じレベルにあるのはなぜ間違っているのかわかりません。 「upload.js」は、「app.js」と同じレベルにある「routes」というフォルダーにあります。

そして、app.jsのパブリックフォルダーへのルート「/ public」を指定しました。

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

質問:

私は何を間違えましたか?

8
Coder1000

プロジェクトディレクトリ内のファイルを削除したいと思います。これで試してください(「/」の前のドット):

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

パスの一部を見逃しました。表示しているものだけでは十分ではありませんが、次の方法で修正できます。

たとえば、ファイルのパスは次のとおりです。

 '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」としての最上位フォルダー名ですが、パスが自動的に生成された場合、最上位フォルダーは無視されました

そこで、「バックエンド」をパスに追加し、機能し始めました。

あなたはあなたのケースで不足している部分を見つける必要があります。

0
William Hou