【问题标题】:How do you make multer save the file in a folder?你如何让multer将文件保存在文件夹中?
【发布时间】:2018-04-10 07:06:22
【问题描述】:

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

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
  });
};

【问题讨论】:

    标签: javascript node.js file file-upload multer


    【解决方案1】:

    代码运行良好。检查您的文件夹权限。确保服务器能够写入文件夹。

    【讨论】:

    • 对不起,我对使用 meanJS 和客户端-服务器工作有点陌生,但是 img 文件夹有 chmod 755 而服务器端控制器有 chmod 644 (-rw-r--r- -)。我会说,如果我在exports.upload 函数和filename 函数的中间抛出打印语句,什么也不会打印出来。它是否必须与不被调用有关?
    猜你喜欢
    • 2018-07-28
    • 2016-10-18
    • 2021-11-18
    • 2012-06-18
    • 1970-01-01
    • 2021-11-07
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多