- 五月
- 23
- load
- load
【Retrofit第五篇】协程上传,善变的方法 2021-05-23 21:59:48
上传和下载不同,上传的方法很多,我会逐一介绍,因为操作多,你每次百度都能找到新的上传操作。
不过有一点和下载相同,Retrofit不支持监听进度条,想监听要调用okhttp
这次,我们要创建一个继承RequestBody的类
至少有个好消息,不管你用什么方法上传,都不会改变重写的RequestBody
单文件上传
首先,创建一个带@Multipart注解的post请求
然后上传就这样
RequestBody自带的RequestBody,是不能让你监听过程,因此要把okhttp调出来改写一下。
至于getDiskCachePath()是什么?那是获取应用缓存目录的方法,你随意百度一个代码都可以。
单文件上传中,刚刚我提到的是适合动态参数时,如果要把参数写死,那么要改成这样
上传的实现
如此操作,我们就把part省略了,不过这种场景只适用于无需自定义文件名,上传参数名是写死的情况。
多文件上传
和单文件一样,有两种操作
上传的实现
如果你不喜欢传list上传,可以用map
上传的实现
通用的上传方式,body上传
和前面那几种方式,body上传显得有点非主流,但body是可以支持转换器的,也就是说可以传个我自己喜欢的对象,转换成应该传递的对象
上传的实现
和其它相比,body上传的代码量就显得有点多了,不过它支持转换器,扩展性会更好。
至于要使用哪个,看个人需求吧,没有说哪个好哪个坏的。
原创文章,转载请注明出处
正在加载评论...