Android 使用OKhttp 3.0以上版本上传文件或图片(MultipartBuilder已不可用)
来源:互联网 发布:php关闭微信浏览器 编辑:程序博客网 时间:2024/06/06 01:29
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.Part
和
MultipartBody.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方式正常提交就可以上传图片至服务器。
-------------------------------------- 更新 -------------------------------------
开发过程中,有时候需要直接把内存中的一张图片上传到服务器,可以采用二进制流的方式。
ByteArrayOutputStream bos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos); 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"), bos.toByteArray())) .build()) .build();
- Android 使用OKhttp 3.0以上版本上传文件或图片(MultipartBuilder已不可用)
- Android okhttp上传图片文件
- android 使用OkHttp上传多张图片
- android 使用OkHttp上传多张图片
- android 使用OkHttp上传多张图片
- Android okHttp图片上传
- 使用okhttp上传文件---单文件或多文件
- 使用Okhttp上传图片
- 使用OkHttp上传图片
- 使用OkHttp上传图片
- android使用webview上传文件(适配4.4以上系统)
- android studio 版本控制 .gitignore 文件配置 &&移除已上传到git的不需版本控制的文件
- android studio 版本控制 .gitignore 文件配置 &&移除已上传到git的不需版本控制的文件
- OkHttp使用(三)文件上传
- OkHttp使用(三)文件上传
- iOS上传文件或base64(图片)之AFNetworking 3.0+上传文件上传图片
- android使用webview上传文件(图片)
- 【Android】Android客户端使用okhttp上传文件php服务器
- java动态代理
- KVC与KVO详细介绍
- JVM---内存
- UVa 10305 Ordering Tasks
- github项目拖管
- Android 使用OKhttp 3.0以上版本上传文件或图片(MultipartBuilder已不可用)
- modelAndView传值给JSP
- 静态数据成员时间类
- spoj CPTTRN4 - Character Patterns (Act 4)
- Windows驱动开发(1) - 驱动程序结构
- c++实验作业——3
- ughi
- linux中文件描述符fd和struct file结构体的释放
- 一、Python 进阶 之 函数式编程