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

使用Apache HTTP Client向Spring Boot传文件时遇HTTP 400错误

问题排查与解决:Apache HttpClient传文件到Spring Boot报MissingServletRequestPartException

问题重现

使用Apache HTTP Client向Spring Boot服务器传输文件时收到HTTP 400错误,报错信息:

Resolved [org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'file' is not present]

客户端代码:

HttpPost request = new HttpPost(new URIBuilder(URI.create(host)).setPath("api").addParameter("id", id).build());
request.setEntity(MultipartEntityBuilder.create()
        .addPart("file", new InputStreamBody(myStream, MULTIPART_FORM_DATA))
        .build());
CloseableHttpResponse response = httpClient.execute(request);

服务端代码:

@PostMapping(consumes = MULTIPART_FORM_DATA_VALUE)
public void send(@RequestParam("id") String id,
                 @RequestParam("file") MultipartFile file) throws IOException {
// Do something
}

已尝试的方案无效:

  • 服务端:设置spring.servlet.multipart.enabled=true、用@RequestPart替代@RequestParam
  • 客户端:添加.setMode(BROWSER_COMPATIBLE)、使用addBinaryPart

核心问题与解决方法

1. 客户端InputStreamBody缺少文件名参数

Spring的MultipartFile需要识别文件元信息(比如文件名),当前使用的InputStreamBody只传入了流和媒体类型,未指定文件名,导致Spring无法正确解析为MultipartFile。

修改客户端代码,补充文件名参数:

// 第三个参数为自定义文件名,需保证非空
.addPart("file", new InputStreamBody(myStream, MULTIPART_FORM_DATA, "upload-file.txt"))

如果数据源是本地文件,推荐直接使用FileBody,它会自动携带完整文件元信息:

.addPart("file", new FileBody(new File("path/to/your/file"), MULTIPART_FORM_DATA))

2. 检查请求路径是否正确

客户端代码中setPath("api")可能缺少前缀斜杠,若服务端@PostMapping无额外路径前缀,正确路径应为"/api",否则请求会发送到域名根路径下的api节点,可能与服务端路由不匹配。

修改路径设置:

.setPath("/api")

3. 显式指定请求Content-Type(可选)

虽然MultipartEntityBuilder会自动生成multipart/form-data类型,但显式指定可避免潜在的类型解析问题:

request.setHeader(HttpHeaders.CONTENT_TYPE, MULTIPART_FORM_DATA_VALUE);

4. 服务端参数绑定调整(可选)

若上述修改后仍有问题,可尝试将服务端的@RequestParam改为@RequestPart,确保参数名与客户端完全匹配:

public void send(@RequestParam("id") String id,
                 @RequestPart("file") MultipartFile file) throws IOException {
// Do something
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:33:15