2017-10-29 151 views
0

我在使用multer将照片保存到文件夹时遇到问题。文件的路径将被上传到mlab(工作正常),但它应该从我想从它抓取它的文件夹中抓取图像,这只是不保存。当试图从视图中查看它时,由于图片不存在于文件夹中,它会引发404错误。这里是我的服务器端控制器:你如何让multer将文件保存在一个文件夹中?

var multer = require('multer'); 

var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
    cb(null, './modules/articles/client/img/'); // where to store it 
    }, 
    filename: function (req, file, cb) { 
    if(!file.originalname.match(/\.(png|jpg|jpeg|pdf|gif)$/)) { 
     var err = new Error(); 
     err.code = 'filetype'; // to check on file type 
     return cb(err); 
    } else { 
     var day = new Date(); 
     var d = day.getDay(); 
     var h = day.getHours(); 
     var fileNamee = d + '_' + h + '_' + file.originalname; 
     console.log("filename produced is: " + fileNamee); 
     cb(null, fileNamee); 
    } 
    } 
}); 

var upload = multer({ 
    storage: storage, 
    limits: { fileSize: 20971520 } // Max file size: 20MB 
}).single('myfile'); // name in form 

exports.uploads = function (req, res) { 
    upload(req, res, function (err) { 
    if (err) { 
     if (err.code === 'LIMIT_FILE_SIZE') { 
     res.json({ success: false, message: 'File size is too large. Max limit is 20MB' }); 
     } else if (err.code === 'filetype') { 
     res.json({ success: false, message: 'File type is invalid. Accepted types are .png/.jpg/.jpeg/.pdf' }); 
     } else { 
     console.log('err = ' + err); 
     res.json({ success: false, message: 'File was not able to be uploaded' }); 
     } 
    } else { 
     if (!req.file) { 
     var article = new Article(req.body); 
     article.user = req.user; 

     article.save(function (err) { 
      if (err) { 
      return res.status(400).send({ 
       message: errorHandler.getErrorMessage(err) 
      }); 
      } else { 
      res.jsonp(article); 
      } 
     }); 
     } 
     else if (req.file) { 
     res.json({ success: true, message: 'File was uploaded!' }); 
     } 

    } 
    // Everything went fine 
    }); 
}; 

回答

0

代码工作正常。检查您的文件夹权限。确保服务器能够写入文件夹。

+0

对不起,我有点新来处理meanJS和客户端 - 服务器工作,但img文件夹有chmod 755,而服务器端控制器有chmod 644(-rw-r - r--)。我会说,如果我在exports.upload函数和文件名函数中间引入print语句,则不会打印出任何内容。它是否需要做一些事情而不被称为? – Andrei

相关问题