#java #spring #rest #spring-mvc
#java #spring #rest #spring-mvc
Вопрос:
Я не могу отправить несколько файлов с использованием шаблона Rest. Как я могу отправить несколько файлов в одном вызове шаблона REST и на стороне получателя (хоста), каков метод контроллера?
Приведенный ниже код кода работает для отправки одного файла.
Код на стороне клиента
LinkedMultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
map.add("file", new ClassPathResource(file));
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<LinkedMultiValueMap<String, Object>> requestEntity =
new HttpEntity<LinkedMultiValueMap<String, Object>>(map, headers);
ResponseEntity<String> result = template.get().exchange(
contextPath.get() path, HttpMethod.POST, requestEntity,
String.class);
Код хост-контроллера
@RequestMapping("/url")
@ResponseBody
public String readFiles( MultipartFile file){
---
---
}
Ответ №1:
FormHttpMessageConverter formHttpMessageConverter = new FormHttpMessageConverter();
formHttpMessageConverter.setCharset(Charset.forName("UTF8"));
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(formHttpMessageConverter);
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
restTemplate.setInterceptors(Arrays.asList(new LoggingRequestInterceptor()));
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
String uri = "https://if-one.pl/api/v1/documents";
String imagePath = "/path_to_file/do1.jpg";
String imagePath2 = "/path_to_file/do2.jpg";
MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
map.add("doctype", "idcard");
Resource file1 = new FileSystemResource(imagePath);
Resource file2 = new FileSystemResource(imagePath2);
map.add("file", file1);
map.add("file", file1);
HttpHeaders imageHeaders = createHeaders();
imageHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<MultiValueMap<String, Object>> imageEntity = new HttpEntity<MultiValueMap<String, Object>>(map, imageHeaders);
HttpEntity<String> request = new HttpEntity<String>(imageHeaders);
ResponseEntity<String> resposne =
restTemplate.exchange(uri, HttpMethod.POST, imageEntity, String.class);