尝试使用 Multer

问题描述 投票:0回答:0

训练自己了解 Multer 如何与 React 一起工作。这是 multer-config.js :

const multer = require("multer");

const MIME_TYPES = {
  "image/jpg": "jpg",
  "image/jpeg": "jpg",
  "image/png": "png",
};

const storage = multer.diskStorage({
  destination: (req, file, callback) => {
    console.log("oui");
    callback(null, "images");
  },

  filename: (req, file, callback) => {
    const name = file.originalname.split(" ").join("_");
    const extension = MIME_TYPES[file.mimetype];
    callback(null, name + Date.now() + "." + extension);
  },
});

const errorHandler = (err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send("Something went wrong!");
};

module.exports = multer({ storage: storage }).single("image");

这是控制器:

exports.createCommInfos = (req, res, next) => {
  const infosObject = req.body;
  const infos = new CommInfos({
    ...infosObject,
    imageUrl: `${req.protocol}://${req.get("host")}/images/${
      req.body.picture.path
    }`,
  });

  infos
    .save()
    .then(() => {
      res.status(201).json({ message: " Infos enregistré !" + infos });
    })
    .catch((error) => {
      res.status(400).json({ error });
    });
};

这是我用来发布的功能:

export async function postCommInfos(e, body, setCommPayment, setCommForm) {
    e.preventDefault(e);


      if (validForm(body)) {
        console.log(body)
            try {
      await fetch("http://localhost:8000/bioanimale/comminfos", {
        method: "POST",
        headers: {
          "Content-Type": "application/json;charset=utf-8",
        },
        body: JSON.stringify(body),
      });
      setCommPayment(true)
      setCommForm(false)
    } catch (e) {
      console.log(e);
    }
      }

  }

当我使用 POST 路由时,我的数据库成功接收了我的数据,但是 Multer 应该将图像保存在后端/图像中,但它不起作用。当我使用 POST 时,console.log(在控制器和 multer-config.js 中)根本没有出现。


router.post("/cominfos", multer, infosCtrl.createComInfos);
router.post("/recinfos", multer, infosCtrl.createRecInfos);
router.post("/orainfos", multer, infosCtrl.createOraInfos); 
node.js multer
© www.soinside.com 2019 - 2024. All rights reserved.