这是我的代码:
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' }
我不确定这里出了什么问题。有人有什么想法吗?
答案 0 :(得分:2)
您的代码尝试将public/temp
目录重命名为public/images
。 public/images
大概已经存在,所以你得到了那个错误。换句话说,在移动图像的任何地方,您只需将目标public/temp
“移动”(重命名)为public/images
。
您必须使用photo.path
。使用它作为第一个参数,然后第二个参数应该path.join
将目录映像到path.basename(photos.path)
。