Android 使用 okhttp3和retrofit2 进行单文件和多文件上传
作者:_MWY 发布时间:2023-04-29 07:33:22
标签:android,okhttp3,retrofit2,文件上传
前言
开发项目中需要进行单文件多文件的上传功能,下面演示的ApiResponse是自己分装的返回值,要根据自己的项目来完成。使用的mvvm框架,kotlin协程。
看下大体思路和传参形式,仅供参考
一、单文件上传
1、apiService中
@Multipart
@POST("xxxx/xxx")
suspend fun upload(
@Part part: MultipartBody.Part,
@Query("code") code: String
): ApiResponse<String>
2、acivity代码
val file = File(it)
val requestBody: RequestBody = RequestBody.create(MediaType.parse("image/*"), file)
val part = MultipartBody.Part.createFormData("file", file.getName(), requestBody)
mViewModel.upload(part)
二、多文件上传
1、apiservice中
@POST("xxx/xxxxs")
suspend fun uploads(
@Body part: MultipartBody,
@Query("code") code: String
): ApiResponse<String>
2、acivity代码
val builder = MultipartBody.Builder()
builder.setType(MultipartBody.FORM)
getDataList()?.filter { !it.filePath.isNullOrEmpty() }.forEach {
val file = File(it.filePath)
builder.addFormDataPart(
"files",
file.getName(),
RequestBody.create(MediaType.parse("image/jpg"), file)
)
}
mViewModel.uploads(builder.build())
来源:https://blog.csdn.net/weixin_41620505/article/details/127534431


猜你喜欢
- 一.抽象类(一)概念 在继承的层次结构中,每个新的子类都使类变得更加明确和具体。如果从一个子类向父类
- 前言传统的Restful API 存在诸多的问题,首先它无法控制返回的字段,前端也无法预判后端的返回结果,另外不同的返回结果对应不同的请求地
- 一、定义委托delegate void StudentDelegate();//【1】定义一个委托二、定义一个调用和定义事件的类/// &l
- Java中对象的创建clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一
- 0.先导的问题代码 下面的代码演示了一个计数器,两个线程同时对i进行累加的操作,各执行100
- session对象用于在会话范围内,记录每个客户端的访问状态,以便于跟踪每个客户端的操作状态,在会话存储的信息,在浏览器发出后续请求时可以获
- 在Android开发中我们经常使用MediaPlayer来播放音频文件,但是MediaPlayer存在一些不足,例如:资源占用量较高、延迟时
- 在主Activity中:listview=(ListView)findViewById(R.id.listview);getData();/
- 在android6.0之后谷歌对指纹识别进行了官方支持,今天还在放假,所以就随意尝试了一下这个api,但是遇到了各种各样的问题 ①
- 前言 spring事务管理包含两种情况,编程式事务、声明
- 1.使用response对象提供的sendRedirect()方法可以将网页重定向到另一个页面。重定向操作支持将地址重定向到不同的主机上,这
- 前端模板框架为Bootstrap,系统分为前台和后台。后台主要为管理员角色,功能有:商品类型管理、商品管理、订单管理、会员管理、管理员管理等
- 1、在Windows下用CMD netstat命令可以获得当前进程监听端口号的信息,如netstat -ano可以看到IP、port、状态和
- 背景何为延迟队列?顾名思义,延迟队列就是进入该队列的消息会被延迟消费的队列。而一般的队列,消息一旦入队了之后就会被消费者马上消费。场景一:在
- 1. 读取json file1.1 Json dependency<dependency> &nbs
- 如下所示: static void Main()&nbs
- 首先描述一下问题,spring boot 使用的是内嵌的tomcat, 所以不清楚文件上传到哪里去了, 而且spring boot 把静态的
- screenshot截图展示import step1. Add it in your root build.gradle at the en
- java 多线程的几种实现方法总结1.多线程有几种实现方法?同步有几种实现方法?多线程有两种实现方法,分别是继承Thread类与实现Runn
- 以下代码实现了android的免提开启和关闭功能需要添加的权限<uses-permission android:name="