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

如何使用ProxyExchange发送Post Multipart请求?求解决方案

ProxyExchange转发Multipart请求的解决方案

你的问题出在没有将接收的MultipartFile封装到转发的请求体中,ProxyExchange不会自动处理@RequestPart参数的转发逻辑,需要手动构建Multipart格式的请求内容才能完成转发。

以下是修改后的可运行代码:

import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.util.MultiValueMap;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.servlet.function.ProxyExchange;

@PostMapping("/service")
public ResponseEntity<byte[]> proxyPost(ProxyExchange<byte[]> proxy, 
                                        @RequestHeader("authorization") String authorizationHeader,
                                        @RequestPart("file") MultipartFile file) throws Exception {
    // 构建Multipart请求体,将接收的文件封装进去
    MultiValueMap<String, Object> multipartBody = BodyInserters.fromMultipartData("file", file.getResource());
    
    // 设置请求头,确保Content-Type符合Multipart格式要求
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.MULTIPART_FORM_DATA);
    headers.add("Authorization-getway", authorizationHeader);
    
    // 配置ProxyExchange的请求体和头信息,执行转发
    return proxy.uri(dzOptServiceUri.toString() + "/api/service/")
                .headers(headers)
                .body(multipartBody)
                .post(response -> {
                    return ResponseEntity.status(response.getStatusCode())
                            .headers(response.getHeaders())
                            .header("Authorization-getway", authorizationHeader)
                            .body(response.getBody());
                });
}

关键细节说明:

  • 用BodyInserters.fromMultipartData将MultipartFile转换为符合要求的Multipart请求体格式,确保目标服务能正确解析文件参数
  • 显式指定Content-Type为multipart/form-data,避免请求头格式不匹配导致的解析失败
  • 通过proxy.body()方法传入构建好的请求体,替代默认的空请求体转发逻辑

如果你的请求中还有其他表单参数,可通过multipartBody.add("paramKey", paramValue)的方式添加到请求体中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:56:11