2013-03-06 3 views
1

Вот мой код: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' } 

я не уверен, что происходит не так здесь. У кого-нибудь есть идеи?

ответ

1

Ваш код пытается переименовать каталог public/temp в public/images. public/images предположительно уже существует, поэтому вы получаете эту ошибку. Другими словами, нигде в этом месте вы не перемещаете изображение, вместо этого вы «переезжаете» (переименовываете) каталог public/temp в public/images.

Вместо этого вы должны использовать photo.path. Используйте его как первый параметр, а затем, возможно, второй параметр должен path.join каталог изображений path.basename(photos.path).

Смежные вопросы