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

使用Spring RestTemplate发送Post multipart(PDF)请求遇400错误求助

兄弟,400 Bad Request这个错误确实磨人,我之前上传文件时也踩过好几个类似的坑,咱们一步步拆解排查:

最常见的几个原因&解决方法

1. 请求头Content-Type设置错误

上传文件的请求必须用multipart/form-data类型,但很多人会不小心设成application/json或者手动写错格式。

  • 如果用浏览器原生FormData,不用手动设置Content-Type,浏览器会自动带上正确的头(包括multipart边界);
  • 如果是Node.js里用axios/request库,确保不要手动覆盖Content-Type,让FormData自动处理。比如axios里只要你传的是FormData实例,它会自动设置正确的头;
  • 额外检查:后端要求的其他必填头(比如Authorization、X-API-Key)有没有加对,拼写和值都不能错。

2. FormData构造不符合后端要求

这是最容易出错的点:

  • 字段名不匹配:后端接口要求的文件字段名是file还是document?比如后端要uploaded_file,你写成pdf_file,直接就会被校验打回;
  • 文件对象无效:浏览器里要确保取到的是input.files[0](不是input本身),Node.js里要用fs.createReadStream读取文件,不能直接传文件路径字符串;
  • 可选但建议加文件名:append的时候第三个参数传文件名,避免后端解析时出现异常。比如:
// 浏览器端正确示例
const formData = new FormData();
formData.append('document', document.getElementById('pdf-input').files[0], 'my-document.pdf');

// Node.js + axios示例
const formData = new FormData();
formData.append('document', fs.createReadStream('./my-document.pdf'), { filename: 'my-document.pdf' });

3. 文件大小超过后端限制

很多后端会设置上传文件的大小上限,比如:

  • Nginx的client_max_body_size配置;
  • Spring Boot的spring.servlet.multipart.max-file-size;
  • Express的multer中间件限制。
    如果你的PDF超过这个大小,后端会直接返回400。先检查文件大小,或者联系后端确认允许的最大值。

4. 缺失后端要求的其他表单参数

有些接口除了文件,还需要额外的表单字段(比如user_id、doc_type),如果漏加这些必填参数,后端校验不通过就会返回400。记得把这些参数也加到FormData里:

formData.append('user_id', '12345');
formData.append('doc_type', 'INVOICE');

5. 请求路径或代理问题

  • 先确认端点URL有没有写错:有没有多打/少打斜杠?环境是不是正确(测试环境vs生产环境)?
  • 如果用了代理工具(比如Charles、Fiddler),检查证书是否被信任,代理会不会篡改请求内容导致格式错误。
快速排查步骤
  1. 先用Postman或curl手动测试接口,看能不能成功上传。比如curl命令:
curl -X POST -F "document=@your-file.pdf" https://your-api-endpoint.com/upload

如果Postman能成功,那问题肯定在你的代码里;如果Postman也失败,直接找后端同事确认接口配置。
2. 打开浏览器开发者工具(F12),查看Network面板里的请求详情:

  • 检查Request Headers里的Content-Type是不是multipart/form-data; boundary=xxx;
  • 查看Form Data里的字段和文件是不是正确,有没有空值。

如果还是解决不了,把你的代码片段、请求头详情贴出来,我再帮你定位!

内容的提问来源于stack exchange,提问作者Ahmed Lotfy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:09:39