Android Retrofit2+rxjava2+Mvp基于okhttp3网络请求框架的使用 三 文件上传(支持多文件/多图片上传)

我们在写项目的时候必不可少的会用到网络请求服务器,现Retrofit2+rxjava2+Mvp的框架组合已经成为了主流网络请求框架,我使用这个框架两年多了 以下分享下开发心得和使用方法
Retrofit2+rxjava2+Mvp基于okhttp3网络请求框架的使用 一 框架配置

Retrofit2+rxjava2+Mvp基于okhttp3网络请求框架的使用 二 请求数据

Retrofit2+rxjava2+Mvp基于okhttp3网络请求框架的使用 三 文件上传(支持多文件)

Retrofit2+rxjava2+Mvp基于okhttp3网络请求框架的使用 四 下载文件

第一步:请求工具类Api里添加上传接口

  //图片上传
    @Multipart
    @POST("face/uploadFile")
    fun uploadFile(@Part partList: List<MultipartBody.Part>): Observable<ResultEntity>

第二步:添加回调接口

interface ICUpdate {

    interface IPUpdate {
  		fun updateData()

    }

    interface IVUpdate : BaseView{
        fun sucess(status:Boolean)
    }

}

第三步:上传方法实现

class UpdatePresenter(private val mView: ICUpdate.IVUpdate) :
    BasePresenter(),
    ICUpdate.IPUpdate {

    private val mProvider: LifecycleProvider<ActivityEvent>
    private val mView: ICCustodyCard.IVCustodyCard

    constructor(
        mProvider: LifecycleProvider<ActivityEvent>,
        mView: ICCustodyCard.IVCustodyCard
    ) : super() {
        this.mProvider = mProvider
        this.mView = mView
    }

    override fun uploadData(list:List<Url>) {

    
        val parts = ArrayList<MultipartBody.Part>()
        list.forEach { 
            val body =
                RequestBody.create(MediaType.parse("multipart/form-data"), File(it))
            val part = MultipartBody.Part.createFormData("file", "123" + ".jpg", body)
            parts.add(part)
        }

        RetrofitHelper.getApi().uploadFile(parts).map {

            return@map it
        }
            .compose(RxUtils.rxSchedulerHelper())
            .compose(mProvider.bindToLifecycle())
            .subscribe({
                if (it.code == Utils.SUCCESS) {
                    mView.sucess(true)
                } else {
                    mView.showError(it.msg)
			 }
		  }, { mView.showError("${it.message}") })
    }


}

第四步:初始化调用

注:参数为路经集合

var updatePresenter=UpdatePresenter(this)
updatePresenter.uploadFile(list)
注意:我这边统一用的一套框架,使用起来还是很方便的,要是没有使用mvp的话,可以直接把实现方法剥离出去也是可以的,看大家怎么使用了
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值