Multer 错误地解析了 formData
Multer incorrectly parses formData
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);
Multer 不会解析嵌套在数组中的表单数据文件。最好遍历 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);
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);
Multer 不会解析嵌套在数组中的表单数据文件。最好遍历 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);