Last active
May 7, 2024 00:07
-
-
Save finsterwalder/7925ff822b26cc2e46b5d1fecd5394c3 to your computer and use it in GitHub Desktop.
Uploading a file with Spring RestTemplate
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Service | |
public class FileUploadService { | |
private RestTemplate restTemplate; | |
@Autowired | |
public FileUploadService(RestTemplateBuilder builder) { | |
this.restTemplate = builder.build(); | |
} | |
public void postFile(String filename, byte[] someByteArray) { | |
HttpHeaders headers = new HttpHeaders(); | |
headers.setContentType(MediaType.MULTIPART_FORM_DATA); | |
// This nested HttpEntiy is important to create the correct | |
// Content-Disposition entry with metadata "name" and "filename" | |
MultiValueMap<String, String> fileMap = new LinkedMultiValueMap<>(); | |
ContentDisposition contentDisposition = ContentDisposition | |
.builder("form-data") | |
.name("file") | |
.filename(filename) | |
.build(); | |
fileMap.add(HttpHeaders.CONTENT_DISPOSITION, contentDisposition.toString()); | |
HttpEntity<byte[]> fileEntity = new HttpEntity<>(someByteArray, fileMap); | |
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>(); | |
body.add("file", fileEntity); | |
HttpEntity<MultiValueMap<String, Object>> requestEntity = | |
new HttpEntity<>(body, headers); | |
try { | |
ResponseEntity<String> response = restTemplate.exchange( | |
"/urlToPostTo", | |
HttpMethod.POST, | |
requestEntity, | |
String.class); | |
} catch (HttpClientErrorException e) { | |
e.printStackTrace(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment