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

JavaScript使用FormData发送数据失败,后端接收内容为空的问题排查

问题分析与解决方案

核心问题是后端未配置处理multipart/form-data类型请求的中间件。Express框架默认只解析application/x-www-form-urlencoded和application/json格式的请求,对于包含文件的表单数据(即multipart/form-data),需要专门的中间件来解析,否则req.files和req.body都会是空对象。

具体解决步骤

1. 安装multer依赖

在项目根目录执行命令:

npm install multer

2. 配置multer并在路由中使用

修改你的后端路由代码,引入multer并配置中间件:

const express = require('express');
const router = express.Router();
const multer = require('multer');

// 可选:配置文件存储方式,这里用内存存储(也可改为磁盘存储)
const storage = multer.memoryStorage();
const upload = multer({ storage: storage });

// 使用upload.any()接收所有上传的文件,若需指定字段名可改用upload.fields([{name: 'file0'}, ...])
router.post('/registerFullData', upload.any(), async (req, res) => {
  const files = req.files;
  const body = req.body;
  console.log(files);
  console.log(body);
  // 后续业务逻辑...
});

3. 前端代码确认

你的前端AJAX配置是正确的:

  • processData: false:阻止jQuery自动将FormData转为字符串
  • contentType: false:让浏览器自动设置正确的multipart/form-data请求头(包含boundary分隔符)
    无需修改前端代码,若需添加其他表单字段,直接用formData.append('字段名', 值)即可,后端req.body会自动解析这些字段。

内容的提问来源于stack exchange,提问作者Dmytro V

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:40:18