728x90
@PostMapping
public String getFile(@RequestParam MultipartFile attachFile) throws IOException {
MultiValueMap<String, Object> messageBody = new LinkedMultiValueMap<>();
messageBody.add("file", attachFile.getResource());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(messageBody, headers);
String serverUri = "[API URI]";
RestTemplate restTemplate = getRestTemplate();
ResponseEntity<String> serverEntity = restTemplate.postForEntity(serverUri, httpEntity, String.class);
return "redirect:/";
}
- html에서 얻는 파일 name(attachFile)으로 @RequestParam을 통해 얻음
- MultiValueMap<>()에 얻은 파일을 추가 (이때 getResource()로 Resource를 추가)
- HttpHeaders()에는 MediaType.MULTIPART_FORM_DATA을 지정
- 위에서 만든 body, header로 HttpEntity를 만듬
- RestTemplate을 생성
- RestTemplate.postForEntity에 URI, HttpEntitty, class를 지정 (class=api의 return type)
RestTemplate 생성 코드
private RestTemplate getRestTemplate() {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(3000);
factory.setReadTimeout(3000);
factory.setBufferRequestBody(false);
return new RestTemplate(factory);
}
[reference]
https://velog.io/@dailylifecoding/Spring-MVC-multipartFile-sending-technique
728x90
'Java & Spring' 카테고리의 다른 글
[Java] 배열과 리스트를 정렬할 수 있는 방법 정리 (0) | 2023.10.09 |
---|---|
[Java] Stack 정리 (0) | 2023.10.09 |
[Java] Queue와 PriorityQueue 정리 (0) | 2023.10.09 |
[Java] String.format(%s, %d, %f, %t, %c) (1) | 2023.10.05 |
[Error] cannot deserialize from Object value (no delegate- or property-based Creator) (0) | 2023.06.17 |