Multer 错误地解析了 formData

Multer incorrectly parses formData

Mu​​lter 接收表单数据,但将所有字段(包括图像文件)留在 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);

Mu​​lter 不会解析嵌套在数组中的表单数据文件。最好遍历 React 状态数组,并将每个文件单独附加到 formData 对象。 (参见 FormData API and Multer docs

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

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

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