最近在做上传业务,然后总结了一下,大多数情况上传的问题。
平时上传功能并不多,最近做UGC相关,接触用户上传图片和视频业务,还有混合上传业务。可以说难倒是并不难,就是协议和后台联调,尤其是后台的技术参差不齐的时候。
可能还有一些特殊的技巧,大家可以查找一下,因为我发现这块资料少,所以写了这篇付费文章,不像浪费时间的付费阅读。
我们通常Retrofit有4中标准的方式上传
看api定义
/**
* Multipart:表示请求实体是一个支持文件上传的Form表单,需要配合使用@Part,适用于 有文件 上传的场景
* Part:用于表单字段,Part和PartMap与Multipart注解结合使用,适合文件上传的情况
* PartMap:用于表单字段,默认接受的类型是Map<String,REquestBody>,可用于实现多文件上传
* Part 后面支持三种类型,{@link RequestBody}、{@link okhttp3.MultipartBody.Part} 、任意类型;
*
* @param file 服务器指定的上传图片的key值
* @return
*/
@Multipart
@POST("project/upload")
fun upload(@Part("file\";filename=\"test.png") file: RequestBody): Call<ResponseBody>
@Multipart
@POST("project/upload")
fun upload2(@Part file: MultipartBody.Part): Call<ResponseBody>
// TODO 上传多张图片
@Multipart
@POST("project/upload")
fun upload3(@PartMap map:Map<String,RequestBody>):Call<ResponseBody>
@Multipart
@POST("project/upload")
fun upload4(@PartMap map:Map<String,MultipartBody.Part>):Call<ResponseBody>
不拿完整的实例,因为这个里不同的项目封装不同。核心用法一样。看下对应的实现代码
网友评论