【问题标题】:Multer incorrectly parses formDataMulter 错误地解析 formData
【发布时间】:2021-11-08 23:28:18
【问题描述】:

Multer 接收表单数据,但将所有字段(包括图像文件)留在 req.body 对象中。这是我的代码:

反应:

const state = {
  // other fields
  images: [], // array of image files
};

let formData = new FormData();
// append other fields
formData.append("images", state.images);

await fetch(url, {
  body: formData,
  // config
});

快递:

const express = require("express");
const router = express.Router();
const controller = require("./controller");
const multer = require("multer");

const storage = multer.memoryStorage();

const imageFilter = (req, file, cb) => {
  // accept image files only
  if (!file.originalname.match(/\.(jpg|jpeg|png|gif)$/i)) {
    return cb(new Error("Only image files are allowed!"), false);
  }
  cb(null, true);
};

const upload = multer({ storage, fileFilter: imageFilter });

// other routes
router.post("/", upload.array("images"), controller.handleImagePost);

【问题讨论】:

    标签: node.js reactjs express multer


    【解决方案1】:

    如果表单数据文件嵌套在数组中,Multer 不会解析它们。最好遍历您的 React 状态数组,并将每个文件单独附加到 formData 对象。 (见FormData APIMulter docs

    for (const image of state.images) {
      formData.append("image", image, image.path);
    }
    

    确保与您的 multer 中间件代码中的表单数据字段名称匹配

    router.post("/", upload.array("image"), controller.handleImagePost);
    

    【讨论】:

      猜你喜欢
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 2014-11-19
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多