Multer接收表单数据,但将所有字段(包括图像文件)保留在req.body对象中。下面是我的代码:
React:
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);发布于 2021-09-13 17:11:36
如果表单数据文件嵌套在数组中,Multer不会对其进行解析。最好遍历React状态数组,并将每个文件分别附加到formData对象。(参见FormData API和Multer docs)
for (const image of state.images) {
formData.append("image", image, image.path);
}确保与multer中间件代码中的表单数据字段名称匹配
router.post("/", upload.array("image"), controller.handleImagePost);https://stackoverflow.com/questions/69166606
复制相似问题