node.js - multer 不允许使用默认图像的问题

标签 node.js mongodb express multer

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

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

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

最佳答案

您的问题在这里:

if (req.file 类型 === 未定义) {

typeof返回一个字符串。

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

关于node.js - multer 不允许使用默认图像的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50144920/

相关文章:

node.js - "Error: socket hang up" express

javascript - 获取 GET 请求的正文(NodeJS + axios)

Node : require vs constructor injection 中的 Javascript 依赖注入(inject)和 DIP

node.js - 构建处理 MongoDB 查询的 Express 路由的最佳实践

mongodb - 按两个属性的平均值排序

javascript - MongoDB shell脚本使用投影格式化日期并获取本地时间

javascript - 使用 Node.js 的 mongodb 驱动程序返回嵌套数组中的第一个元素

javascript - 使用NodeJS在事件池中处理请求

mongodb - mongodb 中的自定义范围分片键

html - express:如何使用 sendFile 将 html 和 css 一起发送?