2011-10-28 21 views
6

Objetivo: Publicar imágen usando RestTemplate¿Cómo publicar un conjunto de bytes a través de RestTemplate

momento no usando una variación de este

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); 

alguna opción? ¿Es POSTing un JSON que contiene un byte codificado base64 [] una alternativa válida?

Respuesta

3

Terminé convirtiendo el mapa de bits en una matriz de bytes y luego codificándola en Base64 y luego enviándola a través de RestTemplate usando Jackson como mi serializador.

8

Sí, con algo como esto supongo

Si la imagen es su carga útil y si desea modificar las cabeceras de enviar esta manera:

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); 

lo contrario:

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

gracias por el código, realmente me ayudó a entender cómo funciona todo esto – eladyanai

Cuestiones relacionadas