@RequestParam("xxx")中的字符串必须与Postman form-data的Key完全一致(含大小写),否则MultipartFile为null或报400/415错误;Content-Type须由Postman自动设置,不可手动填写不带boundary的multipart/form-data。

Key 必须和后端 @RequestParam("xxx") 里的字符串完全一致
后端 Spring Boot 接口如果写的是 @RequestParam("file") MultipartFile file,Postman 的 form-data 中 Key 就只能填 file,不能是 excelFile、upload 或带空格的 file name。大小写也必须一致——File 和 file 是两个不同字段。
常见错误现象:响应 200 但后端日志显示 MultipartFile 为 null,或抛出 Current request is not a multipart request 异常。
- 检查点:打开后端 Controller 方法,确认注解中 value 值(或参数名,若没显式指定 value)
- 验证方式:在 Postman Tests 里加一行
console.log(pm.request.body.formdata);,看实际发出的字段名 - 兼容性影响:EasyExcel、EasyPoi、Apache POI 等解析库都依赖这个字段名绑定,错一个字就无法触发文件读取逻辑
Content-Type 不要手动设成 multipart/form-data(除非你禁用了自动 boundary)
Postman 在选择 form-data 模式时,会自动生成合法的 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary...。如果你手动在 Headers 里添加 Content-Type: multipart/form-data(不带 boundary),服务器就收不到 boundary,整个请求体无法解析,大概率返回 400 或 500。
常见错误现象:上传后接口直接报错,Nginx 日志出现 415 Unsupported Media Type,或 Spring 报 Required request part 'file' is not present。
- 正确做法:Body → form-data → 不动 Headers 里的 Content-Type(让它为空或保持默认)
- 例外情况:只有当你在 Pre-request Script 里手拼 multipart 请求体时,才需要自己构造 boundary 并设 header
- 性能影响:手动设错 header 不影响速度,但会让整个请求被网关/框架直接拦截,根本到不了业务代码
上传大 Excel 文件时,超时和分片不是一回事
Postman 默认请求超时是 0(无限),但网络层或反向代理(如 Nginx)可能有 60s 限制;而“分片上传”是服务端能力,Postman 本身不支持把一个 .xlsx 拆成多段发——它只负责发一次完整的 multipart 请求。
常见错误现象:上传 20MB Excel 卡住后报 Error: socket hang up 或 ERR_CONNECTION_TIMED_OUT。
- 先调 Postman 超时:Settings → General → Request timeout → 改成
120000(2分钟) - 再查 Nginx:确认
client_max_body_size和proxy_read_timeout是否足够(例如设为100m和300) - 别被“分片”误导:Postman 没有 upload chunk 功能;真要分片,得换用 curl + script,或让后端提供分片上传接口
下载 Excel 结果文件时,别点 Send,要点 Send and Download
导出接口返回的是二进制流(Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet),如果只点 Send,Postman 会尝试把字节当文本渲染,页面显示一堆乱码或 Base64 字符串。
常见错误现象:响应体看起来像“PK\u0003\u0004\u0014\u0000\u0000\u0000\u0000\u0000...”,而不是弹出保存对话框。
- 正确操作:点击 Send 右侧小箭头 → 选
Send and Download - 验证方式:下载后用 Excel 打开,检查公式、合并单元格、样式是否完好(有些后端导出库对流处理不严谨,会丢格式)
- 容易忽略的点:如果接口返回的是重定向(302)到临时下载链接,Postman 默认不跟随;需在 Settings → General → Enable redirects 勾选上


















