万能的多文件上传例子

最近项目中用到了多文件上传,其实就是仿照微信朋友圈一样的发送动态的效果。之前上传图片用的是Xutils的框架,
上传一张没有任何问题。而这一次是需要上传多张的,我写了一个for循环,将图片累计拼入参数,这样就需要后台一张一张的
接收。可当时的后台也是用的框架,是以File[]的形式接收的。然后我就找各种能封装File[]的参数,然而并没有找到。
折腾了好久,换了很多种方式,都没有成功。最后无意间看到了表单形式的上传,这次才是找到了正主,
在OKHttp这个框架中支持多文件上传,下面直接贴出核心代码:

MultipartBody.Builder multipartBody = new MultipartBody.Builder().setType(MultipartBody.FORM);
        multipartBody.addFormDataPart("method","postDynamic");
        multipartBody.addFormDataPart("uid",RequestUtils.getUid(getActivity())+"");
        multipartBody.addFormDataPart("token","1");
        multipartBody.addFormDataPart("words",dongtai_words.getText().toString());
        for(int i= 0;i<Bimp.tempSelectBitmap.size();i++){
            multipartBody.addFormDataPart("dynamicPictures","image"+i+".jpg", 
            RequestBody.create(UploadUtils.MEDIA_TYPE_PNG,new File(Bimp.tempSelectBitmap.get(i).getImagePath())));
        }
        uploadUtils.sendMultipart(multipartBody,getActivity());
        
upLoadUtils的代码是:
public void sendMultipart(MultipartBody.Builder multipartBody, final Context context){
        OkHttpClient okHttpClient = new OkHttpClient();
        //构建请求体
        RequestBody requestBody = multipartBody.build();
        //构建请求
        Request request = new Request.Builder()
                .url(MyConfig.uploadUrl)//地址
                .post(requestBody)//添加请求体
                .build();

        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
            //这里是成功的回掉,由于我是把回掉接口抽出来了,所以在这里又写了一个接口,
           供activity实现。这里可以根据自己的需求写
                successListener.onSuccess();
            }
        });
    }

别吃惊,就是这么简单。代码也不多做揭示了,一看就明白了。在这里和大家分享一下,以后不会在因此走弯路了。
以前只是听说过这个框架,从来没有用过,今天因为多文件上传找到了这里,就大致浏览了一下,发现这个框架还是
蛮好用的,有时间可以深入研究一下。
在这里说明一下,这个文件上传是万能的,不管是多问价还是单文件,不管是图片还是文本,这一个就可以搞定。
以后不会再用xutils的框架写上传了,那个太局限了。
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值