ファイルを受信してフォルダにアップロードするノード+エクスプレスアプリがあります。それにmulterでアップロードされたファイルを移動するときにエラーが発生しました:リソースがビジー状態またはロックされています
が現在の形ですが、私のserver.jsがあります。競合を避けるために、ランダムに生成された名前で、/アップロードディレクトリにすべてのファイルを送信し
var multer = require('multer');
app.use(multer({ dest: './uploads/' }).single('files'));
を。
ランダムに生成された名前のフォルダを作成してファイルを内部に配置するようにすべて修正する必要があります(ファイルにランダムに "asdf
"という名前が付けられている場合は、 。uploads/asdf/asdf
ファイルを移動するノードの方法はfs.renameを使用しているので、私は私のアップロードのルートに次のコードが含まれていました。
fs.rename('uploads/' + newFile.uploadname, 'uploads/' + newFile.uploadname + '/' + newFile.uploadname, function(err) {
if (err) throw err
console.log('Successfully renamed - AKA moved!')
})
(newFile.uploadnameがあるべき、と実際には、名前が生成されムルター)
そのコードが実行されると、私はこの出力を得る:
D:\NodeApp\app\routes\private\upload.js:35
if (err) throw err
^
Error: EBUSY: resource busy or locked, rename 'D:\NodeApp\uploads\b9998bcbb10326c05f305a6a5a0adb9a' -> 'D:\NodeApp\up
loads\b9998bcbb10326c05f305a6a5a0adb9a\b9998bcbb10326c05f305a6a5a0adb9a'
at Error (native)
ファイルが正常にアップロードされたが、移動していない、またディレクトリが作成されます。
何が起こっていますか?
あなたは 'uploads/'+ newFile.uploadname'を記録できますか?パスが信頼されていない可能性があります – farhadamjady
@farhadamjady nevermind、私はばかです。詳細については、私が投稿した答えを見てください。 – kace91