13

目標: 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); 

代替手段はありますか?base64 でエンコードされた byte[] 配列を含む JSON を POST することは有効な代替手段ですか?

4

2 に答える 2

15

ええ、このようなもので私は推測します

画像がペイロードで、ヘッダーを微調整したい場合は、次の方法で投稿できます。

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);
于 2014-07-18T13:44:10.713 に答える
3

ビットマップをバイト配列に変換し、それをBase64にエンコードしてから、Jacksonをシリアライザとして使用してRestTemplate経由で送信しました。

于 2011-11-04T12:37:54.023 に答える