Retrofit 2将图像数组发送到服务器

时间:2016-09-16 08:54:23

标签: android image arraylist bitmap retrofit2

我想用其他方法将数组图像发送到服务器,如@PartMap或@Part(" avatars_attributes []")。但没有结果。也许你可以帮助我?

对于@PartMap,我使用HashMap包含一些内容:

        for(int i = 0; i < images.size(); i++){
                Bitmap btm = images.get(i);
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                btm.compress(Bitmap.CompressFormat.JPEG, 50, out);
                byte[] profilePictureByte = out.toByteArray();
                final RequestBody imageBody = RequestBody.create(MediaType.parse("image/*"), profilePictureByte);
                map.put("avatars_attributes[]\"; filename=\"avatars_attributes" + i + ".png\"",imageBody);

@Multipart
@POST(ApiRetrofitUrls.TRANSPORTS_URL)
Call<TransportEntity> addTransport(@PartMap() Map<String, RequestBody> map);

但在服务器上只收到空数组avatars_attributes [];

另一方面,我使用RequestBody的ArrayList或RequestBody [],

但结果是一些。

感谢。

1 个答案:

答案 0 :(得分:0)

试试这个

@POST(ApiRetrofitUrls.TRANSPORTS_URL)
Call<TransportEntity> addTransport(@Body RequestBody data);
 MultipartBody.Builder builder = new MultipartBody.Builder();
    builder.setType(MultipartBody.FORM);
    builder.addFormDataPart("content", textContent);

    for(String filePath : imagePathList){
        File file = new File(filePath);
        builder.addFormDataPart("avatars_attributes", file.getName(),
                RequestBody.create(MediaType.parse("image/*"), file));
    }

    MultipartBody requestBody = builder.build();
    Call<SocialCreateFeedResponse> call = mSocialClient.createFeeds( requestBody);