android上传图片到服务器

来源:互联网 发布:华为手机网络助手在哪? 编辑:程序博客网 时间:2024/04/29 21:28

使用okhttp进行上传

在gradle中配置

compile 'com.zhy:okhttputils:2.4.1'
上传图片的主要代码

这个回调中写上传回调的代码

class FileUpdateCallBack implements Callback {    @Override    public void onFailure(Call call, IOException e) {    }    @Override    public void onResponse(Call call, final Response responseR) throws IOException {    }}

上传的代码

url:服务器路径

params:参数

imagePaths:图片路径,支持多张图片同时上传

public void updateImage(String url,Map<String,String> params,List<String> imagePaths){    final OkHttpClient client = new OkHttpClient();    MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM);    //遍历map中所有参数到builder    for (String key : params.keySet()) {        builder.addFormDataPart(key, params.get(key));    }    //遍历paths中所有图片绝对路径到builder,并约定key“upload”作为后台接受多张图片的key    for (String path : imagePaths) {        builder.addFormDataPart("images", FileUtil.getFileName(path), RequestBody.create(MediaType.parse("image/" + FileUtil.getFileType(path)), new File(path)));    }    //构建请求体    RequestBody requestBody = builder.build();    //构建请求    Request request = new Request.Builder()            .url(url)//地址            .post(requestBody)//添加请求体            .build();    client.newCall(request).enqueue(new FileUpdateCallBack());}

然后把这个获取文件类型的方法贴上

public static String getFileType(String path){    return path.substring(path.lastIndexOf(".") + 1);}


最后记得加权限,权限我就不写了哈


0 0
原创粉丝点击