【发布时间】:2020-01-03 03:28:27
【问题描述】:
我想向一些外部 API(使用 Spring Boot 创建)发出多部分请求,但我得到的只是Required request part 'file' is not present。
我知道外部 API 的源代码,但无法修改。它看起来像这样:
@PostMapping("/upload")
public ResponseEntity handleFileUpload(@RequestParam("file") MultipartFile file){
return ResponseEntity.ok().build();
}
从我的应用程序中,我创建和发送请求与以下 sn-p 完全相同:
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
MultiValueMap<String, Object> body
= new LinkedMultiValueMap<>();
body.add("file", "dupa".getBytes());
HttpEntity<MultiValueMap<String, Object>> requestEntity
= new HttpEntity<>(body, headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate
.postForEntity("http://api:8080/upload", requestEntity, String.class);
return response.getBody();
它不起作用的原因是什么?上面使用 Apache HttpClient 重写的代码就像魅力一样。
【问题讨论】:
-
据我所知,你的
MultiValueMap中“文件”值的数据类型应该是FileSystemResource。
标签: spring spring-boot resttemplate