使用fs.rename()的EPERM错误

时间:2013-03-06 05:28:46

标签: javascript node.js

这是我的代码:

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' }

我不确定这里出了什么问题。有人有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您的代码尝试将public/temp目录重命名为public/imagespublic/images大概已经存在,所以你得到了那个错误。换句话说,在移动图像的任何地方,您只需将目标public/temp“移动”(重命名)为public/images

您必须使用photo.path。使用它作为第一个参数,然后第二个参数应该path.join将目录映像到path.basename(photos.path)