Android okHttp上传单张或多张照片

来源:互联网 发布:上海工银安盛软件开发 编辑:程序博客网 时间:2024/04/27 13:22

1.利用LruCache、DiskLruCache实现图片的加载,避免OOM
2.引用开源库https://github.com/pengjianbo/GalleryFinal,实现从相册中选择图片、拍照进而进行上传,图片上传可以


private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png");

private final OkHttpClient client = new OkHttpClient();
private void uploadImg() {        // mImgUrls为存放图片的url集合        MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM);        for (int i = 0; i <mImgUrls.size() ; i++) {            File f=new File(mImgUrls.get(i));            if (f!=null) {                builder.addFormDataPart("img", f.getName(), RequestBody.create(MEDIA_TYPE_PNG, f));            }        }
           //添加其它信息//        builder.addFormDataPart("time",takePicTime);//        builder.addFormDataPart("mapX", SharedInfoUtils.getLongitude());//        builder.addFormDataPart("mapY",SharedInfoUtils.getLatitude());//        builder.addFormDataPart("name",SharedInfoUtils.getUserName());        MultipartBody requestBody = builder.build();        //构建请求        Request request = new Request.Builder()                .url(Constant.BASE_URL)//地址                .post(requestBody)//添加请求体                .build();        client.newCall(request).enqueue(new Callback() {            @Override            public void onFailure(Call call, IOException e) {                                System.out.println("上传失败:e.getLocalizedMessage() = " + e.getLocalizedMessage());            }            @Override            public void onResponse(Call call, Response response) throws IOException {                                System.out.println("上传照片成功:response = " + response.body().string());                ToastCustom.makeText(PictureListActivity.this, "上传成功", Toast.LENGTH_LONG).show();                          }        });    }
0 0
原创粉丝点击