RestTemplate経由でバイト配列を投稿する方法

目標:RestTemplateを使用した投稿画像

現在、このバリエーションを使用しています

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

選択肢はありますか?有効な代替コードであるbase64でエンコードされたbyte []配列を含むJSONをPOSTしていますか?

7

2 答え

うん、私はこのような何かで

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

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

HttpEntity 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 entity = new HttpEntity<>(IOUtils.toByteArray(in));
template.postForEntity("http://example.com/myFileUpload", entity, String.class);
9
追加された
コードのおかげで本当にこの全体の仕組みが理解できるようになりました
追加された 著者 eladyanai,

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

3
追加された