Как разместить байтовый массив через RestTemplate - PullRequest
8 голосов
/ 28 октября 2011

Цель: опубликовать изображение с помощью RestTemplate

В настоящее время используется вариант этого

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

Есть ли альтернативы? Является ли POSTing JSON, который содержит base64-закодированный массив byte [], допустимой альтернативой?

Ответы [ 2 ]

11 голосов
/ 18 июля 2014

Да, с чем-то вроде этого, я думаю

Если изображение является вашей полезной нагрузкой и вы хотите настроить заголовки, вы можете опубликовать его следующим образом:

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

В противном случае:

InputStream in = new ClassPathResource("myFile.jpg").getInputStream();
HttpEntity<byte[]> entity = new HttpEntity<>(IOUtils.toByteArray(in));
template.postForEntity("http://example.com/myFileUpload", entity, String.class);
3 голосов
/ 04 ноября 2011

Закончилось превращение растрового изображения в байтовый массив, затем его кодирование в Base64 и последующая отправка через RestTemplate с использованием Джексона в качестве моего сериализатора.

...