首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Multer错误地解析formData

Multer错误地解析formData
EN

Stack Overflow用户
提问于 2021-09-13 17:06:27
回答 1查看 31关注 0票数 1

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

React:

代码语言:javascript
复制
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
});

快递:

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-13 17:11:36

如果表单数据文件嵌套在数组中,Multer不会对其进行解析。最好遍历React状态数组,并将每个文件分别附加到formData对象。(参见FormData APIMulter docs)

代码语言:javascript
复制
for (const image of state.images) {
  formData.append("image", image, image.path);
}

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

代码语言:javascript
复制
router.post("/", upload.array("image"), controller.handleImagePost);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69166606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档