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/temppublic/images.

你必须photo.path改用。使用它作为第一个参数,然后也许第二个参数应该path.join图像目录到path.basename(photos.path).

于 2013-03-06T06:32:54.260 回答