2011-10-28 14 views
6

Cel: obraz po użyciu RestTemplateJak pisać tablicę bajtów poprzez RestTemplate

Obecnie stosując odmianę tego

MultiValueMap<String, Object> parts = new 
LinkedMultiValueMap<String, Object>(); 
parts.add("field 1", "value 1"); 
parts.add("file", new 
ClassPathResource("myFile.jpg")); 
template.postForLocation("http://example.com/myFileUpload", parts); 

Czy istnieją jakieś alternatywy? Czy POSTing JSON zawierający tablicę bajtów [x] base64 jest prawidłową alternatywą?

Odpowiedz

3

Skończyłem przekształcanie bitmapy w tablicę bajtów, a następnie kodowanie jej do Base64, a następnie wysyłanie za pomocą RestTemplate, używając Jackson jako mojego serializera.

8

Tak, coś takiego Chyba

Jeśli obraz jest twój ładunek, a jeśli chcesz, aby dostosować nagłówki można opublikować go w ten sposób:

HttpHeaders headers = new HttpHeaders(); 
headers.set("Content-Type", "image/jpeg"); 
InputStream in = new ClassPathResource("myFile.jpg").getInputStream(); 

HttpEntity<byte[]> entity = new HttpEntity<>(IOUtils.toByteArray(in), headers); 
template.exchange("http://example.com/myFileUpload", HttpMethod.POST, entity , String.class); 

inaczej:

InputStream in = new ClassPathResource("myFile.jpg").getInputStream(); 
HttpEntity<byte[]> entity = new HttpEntity<>(IOUtils.toByteArray(in)); 
template.postForEntity("http://example.com/myFileUpload", entity, String.class); 
+0

dzięki za kod - naprawdę pomogło mi zrozumieć, jak działa ta cała sprawa – eladyanai

Powiązane problemy