【问题标题】:issue with multer not allowing a default imagemulter 不允许使用默认图像的问题
【发布时间】:2018-05-03 08:03:21
【问题描述】:

所以我遇到了一个我无法弄清楚的 multer 问题。当我添加一个带有图像的项目时,一切正常,但如果我尝试添加一个没有图像的项目,它会失败。我有一个 if 语句,如果 req.file 未定义,它将定义一个默认图像,但它失败并显示错误说 req.file.filename is undefined ... 这是代码

Multer 设置:

var storage = multer.diskStorage({
  destination: function(req, file, callback) {
    callback(null, "./public/uploads");
  },
  filename: function(req, file, callback) {
    callback(null, Date.now() + file.originalname);
  }
});
var upload = multer({ storage: storage }).single("file");

路线:

router.post("/item/add", middleware.isLoggedIn, (req, res) => {
  User.findById(req.user._id, (err, user) => {
    upload(req, res, err => {
      if (err) {
        req.flash("error", "failed to upload file");
        return res.redirect("/products");
      }
      var item = new Item();
      item.name = req.body.name;
      item.description = req.body.description;
      item.price = req.body.price;
      item.createdBy = { id: req.user._id, username: req.user.username };
      if (typeof req.file === undefined) {
        item.image = "/uploads/no-img.png";
      } else {
        item.image = "/uploads/" + req.file.filename;
      }
      item.save(function(err) {
        if (err) {
          res.send(err);
        }
        return res.redirect("/products");
      });
    });
  });
});

所以我想我的问题是......我该如何设置它不会在没有选择图像的情况下失败?

【问题讨论】:

  • 不应该是req.files吗?也许它接受两者。由于名称“multer”源自“多部分内容”,因此我假设命名为“复数”。作为一个基本的调试技巧,您可能应该console.log(req)console.log(JSON.stringify(req, undefined,2)) 或类似的方法在得出结论之前实际检查内容。无论如何,这应该是你的第一步。而且我认为是path 而不是filename 无论如何。
  • @NeilLunn 不,docsreq.file 适用于此。另外,filename 是正确的。请注意,OP 表示当他们传递图像时一切正常。
  • 显示console.log 输出。但话又说回来,我只是发现了一个添加的答案,并没有关注 typeof 我自己。

标签: node.js mongodb express multer


【解决方案1】:

你的问题在这里:

if (typeof req.file === undefined) {

typeof 返回一个字符串。

您的支票应该是if (typeof req.file === "undefined") {

【讨论】:

  • 伙计,我完全忽略了...菜鸟的错误,但非常感谢。
猜你喜欢
  • 2011-12-10
  • 2020-11-04
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 2021-02-04
  • 2019-12-30
  • 2014-10-11
  • 2015-02-20
相关资源
最近更新 更多