美文网首页
Android Rxjava 七牛云多图上传

Android Rxjava 七牛云多图上传

作者: CodeDuan | 来源:发表于2019-10-23 17:04 被阅读0次

    大家平时使用七牛云SDK上传图片的时候,SDK只支持一次上传一个图片,如果需要一次上传多张图片,总不能让用户选一个上传一个把,也可以选多图,利用for循环上传,但是这样会导致上传的图片顺序颠倒,因为图片的大小不一样,有的上传快,有的上传慢。所以接下来我给大家介绍的是利用Rxjava实现七牛云多图上传。

    需要用到的操作符:fromIterable、concatMap。

    fromIterable:是指逐个发射指定的值如 List;

    concatMap:concatMap操作符和flatMap是非常相似,concatMap 最终输出的数据序列和原数据序列是一致,它是按顺序链接Observables,而不是合并,说白了就是按顺序来的,这样不会导致七牛云上传的图片顺序颠倒。

    不多说了,直接上代码。

    图1

    图中的qiNiuFiles其实就是一个List<qiNiuFiles> qiNiuFiles = new ArrayList();   其中包含了你要上传的图片路径,key,token。上传之前需要你先把图片路径,token填进去,

    然后QiniuParams 也是一个实体类,里面包含的是七牛云返回的信息。

    然后再concatMap中的apply方法中返回一个自定义的QiNiuPathOnSubscribe。代码如图:

    QiNiuPathOnSubscribe

    在subscribe方法中写上传的逻辑,上传成功后 emitter.onNext(); 把七牛云返回数据回调出去,上传失败就onError()。

    接下来再接着图一的代码看:

    图3

    这时候在外部的onNext onError onComplete中就可以接收到七牛云返回的参数,或者错误信息。

    onNext中可以把你想要的参数 add进自己的list中。onComplete就代表所有的图片上传完成了,可以关闭dialog或者进度条之类的东西。

    整体上大概就是这样,有问题欢迎指正。

    相关文章

      网友评论

          本文标题:Android Rxjava 七牛云多图上传

          本文链接:https://www.haomeiwen.com/subject/rbmkvctx.html