EPERM错误使用fs.rename()

这是我的代码:

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模块来做到这一点。 在给我的电脑上的所有用户授予两个文件的完全权限后,我收到以下错误:

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

我不确定这里有什么问题。 有人有主意吗?

你的代码试图做的是将public/temp目录重命名为public/imagespublic/images可能已经存在,所以你得到这个错误。 换句话说,你没有移动图像,而是将“ public/temp ”目录“移动”(重命名)为public/images

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