2013-12-12 4 views
8

でファイル名を変更する場合ENOENT私は自分のノード/急行アプリでファイルをアップロードしようとしています、と私は、次のエラーを取得しています:ここでエラー:ノード/急行アプリ

{ [Error: ENOENT, rename '/tmp/64124a9886fdb03f1faee159bc533776'] 
    errno: 34, 
    code: 'ENOENT', 
    path: '/tmp/64124a9886fdb03f1faee159bc533776' } 

/home/frankie/Projects/LP/routes/manager/deliverables.js:51 
          throw err; 
           ^
Error: ENOENT, rename '/tmp/64124a9886fdb03f1faee159bc533776' 

は私から関連するコードですアプリ:

if (req.files.file.name !== '' && req.files.file.size !== 0) { 
    // this will move the uploaded file from the tmp folder to the uploads folder 
    fs.rename(req.files.file.path, app.get('loc') + "uploads/" + name + "-" + id + "/" + req.files.file.name, function (err) { 
     if (err) throw err; 

私は/であるかどうか確認するファイルがあるtmpに:

[email protected]:/tmp$ ll 
total 56 
drwxrwxrwt 12 root root 4096 Dec 12 11:33 ./ 
drwxr-xr-x 23 root root 4096 Sep 27 22:54 ../ 
-rw-rw-r-- 1 fiega fiega 903 Dec 12 11:33 13a26570f87297fd7f61785ef7d8772b 

これは私が身体パーサーを使用しています方法です:

app.use(express.cookieParser()); 
app.use(express.bodyParser()); 
app.use(express.methodOverride()); 

私は自分のアプリケーション全体の権限を変更しようとしましたが、ダイスはありません。

答えて

13

あなたが使用している目的地のパスを確認しましたか? (おそらくapp.get('loc') + "/uploads/" ...)

奇妙なことに(ソースファイルが存在し、宛先ディレクトリではありません)、取得するエラーメッセージはソースファイルのみを指しています...それで問題ではないかどうかを確認してください。

アップロードしたファイルを/a/b/c.txtに移動する場合は、/a/a/bの両方が既に存在している必要があります。

また、別のパーティションにファイルを移動する必要がある場合は、thisのようなものを使用する必要があります。そうしないと、EXDEVエラーが発生します。

1

おそらく元のポスターを助けませんが、他の人がこの問題に遭遇し、ソースと宛先の両方が存在するように見えますが、このエラーが発生していることが判明した場合は、私がこの問題に遭遇したとき、これは私が見つけた正確な問題です。ソース(ファイルへのフルパス)と宛先(ディレクトリ)の両方が存在していましたが、名前がENOENTを投げていました。

私の場合、解決策は、ディレクトリ作成機能の非同期バージョンを使用して宛先ディレクトリを作成していたことを認識することでした。その結果、名前の変更が試みられた時点で、コピー先のディレクトリはまだ存在しませんでしたが、確認したらすぐにディレクトリが完成しました。ディレクトリ作成の同期バージョンに切り替えると、問題が解決されました。

関連する問題