android http上传字节数组,Android中 使用okhttp3上传图片数组遇到的坑

以下是自己的一个小心得

由于以前做多张图片上传到后台服务起的时候,自己前端的做法都是基本都是 使用 :1,将本地获取到的照片进行base64转换之后以某个符号分隔进行拼接传到后台。2,或者使用list list 上传整个集合。

由于okhttp3 封装好的方法不支持直接上传数组对象 ,所以需要自己处理一下,

//  可以直接使用下面方法

private void postDataWithParame() {

OkHttpClient client = new OkHttpClient();

MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM);

builder.addFormDataPart("token",token);//传递键值对参数

builder.addFormDataPart("a","create_discover");//传递键值对参数

builder.addFormDataPart("remarks","4545454");//传递键值对参数

for (int i = 0; i < defList.size(); i++) {

builder.addFormDataPart("thumb[]",null, RequestBody.create(MediaType.parse("image/jpeg; charset=utf-8"),Tools.imageToBase64(defList.get(i))));

}

Request request = new Request.Builder()//创建Request 对象。

.url(url)

.post(builder.build())//传递请求体

.build();

client.newCall(request).enqueue(new Callback() {

@Override

public void onFailure(Call call, IOException e) {

}

@Override

public void onResponse(Call call, Response response) throws IOException {

Log.d("AddAlbumActivity", response.body().string());

}

});

}

最需要注意的是这里

for (int i = 0; i < defList.size(); i++) { // 循环添加图片

builder.addFormDataPart("thumb[]",null, RequestBody.create(MediaType.parse("image/jpeg; charset=utf-8"),Tools.imageToBase64(defList.get(i))));

}

这里上传的是php服务器 thumb 为要上传的参数key 需要在后面加上[] 才能被识别是一个数组对象 ,之前没有加上这个符号的时候怎么传都只有一张图片 加上之后就会被成功解析数组所对应的值。

List defList = new ArrayList<>();defList .add("图片的资源路径");

defList .add("图片的资源路径");

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值