首页 » Android » Android 使用OKhttp 3.0以上版本上传文件或图片(MultipartBuilder已

Android 使用OKhttp 3.0以上版本上传文件或图片(MultipartBuilder已

2016-04-10 15:40:34阅读(2913)

okhttp不用说,很火的网络库。今天说一下上传图片的问题。

搜索一下,很有很多文章介绍怎样上传图片,到本篇文章为止我看到都是用的MultipartBuilder构造器,但是在3.0以上版本中MultipartBuilder已被替代,官方说明如下

Form and Multipart bodies are now modeled. We've replaced the opaque FormEncodingBuilder with the more powerful FormBody and FormBody.Builder combo. Similarly we've upgraded MultipartBuilder into MultipartBody,MultipartBody.Part, and MultipartBody.Builder.

说的是MultipartBuilder已被升级成MultipartBody,MultipartBody.PartMultipartBody.Builder.

stackoverflow上面也有回答

Form and Multipart bodies are now modeled. We've replaced the opaque FormEncodingBuilder with the more powerful FormBody and FormBody.Builder combo. Similarly we've upgraded MultipartBuilder into MultipartBody, MultipartBody.Part, and MultipartBody.Builder.

http://stackoverflow.com/questions/34676044/multipartbuilder-cant-be-resolved-in-okhttp3-0-0-rc1

既然MultipartBuilder不可用了,那么用MultipartBuilder上传图片的方式也不可用了。经过查看官方Demo和自己测试,用以下方式即可在3.0以上版本中上传图片:

MultipartBody body = new MultipartBody.Builder("AaB03x")
                .setType(MultipartBody.FORM)
                .addFormDataPart("files", null, new MultipartBody.Builder("BbC04y")
                        .addPart(Headers.of("Content-Disposition", "form-data; filename=\"img.png\""),
                                RequestBody.create(MediaType.parse("image/png"), new File(path)))
                        .build())
                .build();

其中new File(path)即是图片文件。如果上传多张,则只要多次addFormDataPart即可,构造好body后使用post方式正常提交就可以上传图片至服务器。



最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹