【问题标题】:Error uploading multiple images in node.js在 node.js 中上传多个图像时出错
【发布时间】:2021-04-22 11:07:59
【问题描述】:

我正在尝试在 mongo db 中上传图片,但在邮递员中点击发送后显示“img”:null

我在前端使用颤振,所以我想制作一个休息 api 我能够上传单个图像但是当我尝试上传多个图像时它显示 “img”:空

我还创建了一个架构

我设置的地方

 img:{
type: array,
default:"",
}


const express = require("express");
const router = express.Router();
const Profile = require("../models/profile.model");
const middleware = require("../middleware");
const multer = require("multer");
const path = require("path");
const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, "./uploads");
  },
  filename: (req, file, cb) => {
    cb(null, req.decoded.username + ".jpg");
  },
});

const fileFilter = (req, file, cb) => {
  if (file.mimetype == "image/jpeg" || file.mimetype == "image/png") {
    cb(null, true);
  } else {
    cb(null, false);
  }
};

const upload = multer({
  storage: storage,
  limits: {
    fileSize: 1024 * 1024 * 6,
  },
  // fileFilter: fileFilter,
});

//adding and update profile image
router
  .route("/add/image")
  .patch(middleware.checkToken, upload.array("img",5), (req, res) => {
    Profile.findOneAndUpdate(
      { username: req.decoded.username },
      {
        $set: {
          img: req.files.path,
        },
      },
      { new: true },
      (err, profile) => {
        if (err) return res.status(500).send(err);
        const response = {
          message: "image added successfully updated",
          data: profile,
        };
        return res.status(200).send(response);
      }
    );
  });

【问题讨论】:

  • 如果您的问题没有解决,请发表评论,否则接受我的回答并点赞
  • 我接受了你的回答,它帮助了谢谢你。但是你能帮助理解 img:req.files.map(file => file.path),为什么我们使用 files.map
  • map() 方法创建了一个新数组,其中填充了在调用数组中的每个元素上调用提供的函数的结果,因此req.files 是对象数组,并且希望从每个项目都使用map(),请查看此链接developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

标签: node.js mongodb express node-modules multer


【解决方案1】:

当您上传多张图片时,multer 创建一个对象数组,如下所示:

req.files : [{…}, {…}, {…}]

对象的属性之一是路径,所以在img 中有很多方法可以插入到路径中。 如果img 的类型在架构中定义了array [],您可以在findOneAndUpdate 中这样做:

      {
        $set: {
          img: req.files.map(file => file.path),
        },
      }

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 1970-01-01
    • 2021-01-24
    • 2020-03-25
    • 2019-04-20
    • 1970-01-01
    • 2019-04-11
    • 2016-08-10
    • 2017-01-17
    相关资源
    最近更新 更多