You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React上传图片至Node后端时接收空对象问题求助

问题解决:React上传图片到Node后端,后端接收空对象

核心原因

Node.js默认的body-parser中间件无法解析multipart/form-data格式的请求,直接读取req.body自然会得到空对象;同时上传的文件数据需要通过专门的中间件来处理。

解决步骤

1. 安装文件处理中间件multer

在后端项目中执行:

npm install multer

2. 配置multer并修改路由

在你的路由文件中引入multer,配置存储方式并更新路由:

const multer = require('multer');
// 内存存储(适合临时处理),也可配置磁盘存储持久化文件
const storage = multer.memoryStorage();
const upload = multer({ storage: storage });

// 路由添加multer中间件,'file'对应前端FormData中append的键名
router.post("/setImage", upload.single('file'), userController.setImage);

3. 修改后端控制器获取文件数据

控制器中不再从req.body取数据,而是从req.file获取上传的文件信息:

async setImage(req, res, next) {
  try {
    // 文件数据存储在req.file中
    const uploadFile = req.file;
    console.log(uploadFile);
    // 此处可添加文件处理逻辑(如保存到磁盘、上传云存储等)
    res.status(200).json({ message: '文件上传成功' });
  } catch (e) {
    next(e);
  }
}

4. 前端优化(可选但推荐)

删除手动设置的content-type,axios会自动根据FormData生成包含boundary的正确请求头,避免解析错误:

const uploadFile = (e: any) => {
  e.preventDefault();
  const data = new FormData();
  data.append("file", fileData);
  axios({
    method: "POST",
    url: "http://localhost:5000/api/setImage",
    data: data,
    // 移除下面的headers配置
    // headers: {
    //   "content-type": "multipart/form-data",
    // },
  }).then((res) => {
    alert(res.data.message);
  });
};

内容的提问来源于stack exchange,提问作者Radomir Radionov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:25:26