2011-10-28 34 views
6

Mục tiêu: Gửi hình ảnh sử dụng RestTemplateLàm thế nào để gửi mảng byte qua RestTemplate

Hiện đang sử dụng một biến thể của này

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

Có bất kỳ lựa chọn thay thế? Đang POST một JSON có chứa một mảng byte được mã hóa base64 [] là một lựa chọn hợp lệ?

Trả lời

3

Đã kết thúc chuyển Bitmap thành mảng byte rồi mã hóa nó thành Base64 và sau đó gửi nó qua RestTemplate bằng cách sử dụng Jackson làm bộ nối tiếp của tôi.

8

Yep, với một cái gì đó như thế này tôi đoán

Nếu hình ảnh là tải trọng của bạn và nếu bạn muốn tinh chỉnh các tiêu đề bạn có thể gửi nó theo cách này:

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

Nếu không:

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

cảm ơn mã - nó thực sự giúp tôi hiểu toàn bộ công việc này hoạt động như thế nào – eladyanai

Các vấn đề liên quan