4

これが私のコードです:

exports.post_handler = function(req, res) {
    var photo = req.files.image;
    console.log(photo);
    console.log(__dirname);

    fs.readFile(photo.path, function(err, data) { //I use the path module to join the image path strings
        fs.rename(path.join(__dirname, "public/temp"), path.join(__dirname,"public/images"), function(err) {
            if (err) {
                console.log(err);
                res.redirect("/");
            }
            else {
                console.log("file " + photo.name + "written to uploads folder");
                res.redirect("/home");
            }
        });
    });
}

tempアップロードした画像ファイルを自分のフォルダから自分のフォルダに移動しようとしていuploadsます。私はこれを行うためにfsモジュールを使用しています。PCのすべてのユーザーに両方のファイルへの完全なアクセス許可を付与した後、次のエラーが発生します。

{ [Error: EPERM, rename 'dir\public\temp']
  errno: 50,
  code: 'EPERM',
  path: 'dir\\public\\temp' }

ここで何が問題になっているのかわかりません。誰かアイデアはありますか?

4

1 に答える 1

2

コードが実行しようとしているのは、public/tempディレクトリの名前をに変更することpublic/imagesです。public/imagesおそらくすでに存在しているので、そのエラーが発生します。つまり、画像を移動する場所はどこにもありません。代わりに、ディレクトリpublic/tempをに「移動」(名前変更)しpublic/imagesます。

photo.path代わりに使用する必要があります。これを最初のパラメータとして使用し、次に2番目のパラメータでpath.joinディレクトリをにイメージする必要がありますpath.basename(photos.path)

于 2013-03-06T06:32:54.260 に答える