Android-史上最优雅的实现文件上传、下载及进度的监听,flutter热更新方案
});
注:
如果需要对Http的返回值做解析,可在使用from
操作符时,传入一个解析器Parser
带进度上传
带进度上传
使用uploadProgress
操作符,并结合doOnNext
、filter
、map
即可
RxHttp.postForm(“http://www…”) //发送Form表单形式的Post请求
.add(“file1”, new File(“xxx/1.png”))
.add(“file2”, new File(“xxx/2.png”))
.add(“key1”, “value1”)//添加参数,非必须
.add(“key2”, “value2”)//添加参数,非必须
.addHeader(“versionCode”, “100”) //添加请求头,非必须
.uploadProgress() //注:如果需要监听上传进度,使用uploadProgress操作符
.observeOn(AndroidSchedulers.mainThread()) //主线程回调
.doOnNext(progress -> {
//上传进度回调,0-100,仅在进度有更新时才会回调,最多回调101次,最后一次回调Http执行结果
int currentProgress = progress.getProgress(); //当前进度 0-100
long currentSize = progress.getCurrentSize(); //当前已上传的字节大小
long totalSize = progress.getTotalSize(); //要上传的总字节大小
String result = progress.getResult(); //Http执行结果,最后一次回调才有内容
})
.filter(Progress::isCompleted)//过滤事件,上传完成,才继续往下走
.map(Progress::getResult) //到这,说明上传完成,拿到Http返回结果并继续往下走
.as(RxLife.as(this)) //感知生命周期
.subscribe(s -> { //s为String类型,由SimpleParser类里面的泛型决定的
//上传成功,处理相关逻辑
}, throwable -> {
//上传失败,处理相关逻辑
});
注:
如果需要对Http的返回值做解析,可在使用uploadProgress
操作符时,传入一个解析器Parser
下载
//文件存储路径
String destPath = getExternalCacheDir() + “/” + System.currentTimeMillis() + “.apk”;
RxHttp.get(“http://update.9158.com/miaolive/Miaolive.apk”)
.download(destPath) //注意这里使用download操作符,并传入本地路径
.as(RxLife.asOnMain(this)) //感知生命周期,并在主线程回调
.subscribe(s -> {
//下载成功,回调文件下载路径
}, throwable -> {
//下载失败
});
带进度下载
带进度下载
使用downloadProgress
操作符,并结合doOnNext
、filter
、map
即可
//文件存储路径
String destPath = getExternalCacheDir() + “/” + System.currentTimeMillis() + “.apk”;
RxHttp.get(“http://update.9158.com/miaolive/Miaolive.apk”)
.downloadProgress(destPath) //注:如果需要监听下载进度,使用downloadProgress操作符
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(progress -> {
//下载进度回调,0-100,仅在进度有更新时才会回调,最多回调101次,最后一次回调文件存储路径
int currentProgress = progress.getProgress(); //当前进度 0-100
long currentSize = progress.getCurrentSize(); //当前已下载的字节大小
long totalSize = progress.getTotalSize(); //要下载的总字节大小
String filePath = progress.getResult(); //文件存储路径,最后一次回调才有内容
})
.filter(Progress::isCompleted)//下载完成,才继续往下走
.map(Progress::getResult) //到这,说明下载完成,返回下载目标路径
.as(RxLife.as(this)) //感知生命周期
.subscribe(s -> {//s为String类型,这里为文件存储路径
//下载完成,处理相关逻辑
}, throwable -> {
//下载失败,处理相关逻辑
});
断点下载
断点下载
相较于下载
,仅仅是添加了RANGE
头信息而已,其它没有任何差别
String destPath = getExternalCacheDir() + “/” + “Miaobo.apk”;
long length = new File(destPath).length(); //已下载的文件长度
RxHttp.get(“http://update.9158.com/miaolive/Miaolive.apk”)
//如果文件存在,则添加 RANGE 头信息 ,从上次断开的点,开始下载
.addHeader(“RANGE”, “bytes=” + length + “-”, length > 0)
.download(destPath)
.as(RxLife.as(this)) //加入感知生命周期的观察者
.subscribe(s -> { //s为String类型
Log.e(“LJX”, “breakpointDownloadAndProgress=” + s);
//下载成功,处理相关逻辑
}, throwable -> {
//下载失败,处理相关逻辑
});
带进度断点下载
带进度断点下载
相较于带进度下载
,仅仅是添加了RANGE
头信息而已,其它没有任何差别
String destPath = getExternalCacheDir() + “/” + “Miaobo.apk”;
long length = new File(destPath).length(); //已下载的文件长度
RxHttp.get(“http://update.9158.com/miaolive/Miaolive.apk”)
//如果文件存在,则添加 RANGE 头信息 ,从上次断开的点,开始下载
.a
ddHeader(“RANGE”, “bytes=” + length + “-”, length > 0)
.downloadProgress(destPath)
.observeOn(AndroidSchedulers.mainThread()) //主线程回调
.doOnNext(progress -> {
//下载进度回调,0-100,仅在进度有更新时才会回调
int currentProgress = progress.getProgress(); //当前进度 0-100
long currentSize = progress.getCurrentSize(); //当前已下载的字节大小
long totalSize = progress.getTotalSize(); //要下载的总字节大小
})
currentSize = progress.getCurrentSize(); //当前已下载的字节大小
long totalSize = progress.getTotalSize(); //要下载的总字节大小
})
Android-史上最优雅的实现文件上传、下载及进度的监听,flutter热更新方案相关推荐
- Android OkHttp+RxJava 史上最优雅的实现文件上传/下载进度的监听
本文已授权「刘望舒」微信公众号独家原创发布 前言 本文将直接使用RxHttp库实现文件上传.下载.断点下载.进度的监听,不对RxHttp做过多讲解,如果对RxHttp不了解,请移步 RxHttp 一条 ...
- android上传图片文件至c 服务器,Android 史上最优雅的实现文件上传、下载及进度的监听...
本文已授权「刘望舒」微信公众号独家原创发布 前言 本文将直接使用RxHttp库实现文件上传.下载.断点下载.进度的监听,不对RxHttp做过多讲解,如果对RxHttp不了解,请移步 本文目的在于让更多 ...
- png文件头_Android 史上最优雅的实现文件上传、下载及进度的监听
作者丨Android技术干货分享https://www.jianshu.com/p/d643f5a8fead 前言 本文将直接使用RxHttp库实现文件上传.下载.断点下载.进度的监听,不对RxHtt ...
- Android-史上最优雅的实现文件上传、下载及进度的监听,android自定义控件开发入门与实战
注:如果需要对Http的返回值做解析,可在使用uploadProgress操作符时,传入一个解析器Parser 下载 //文件存储路径 String destPath = getExternalCac ...
- Android-史上最优雅的实现文件上传、下载及进度的监听,网易严选Android开发三面面经
.add("key", "value") .add("file1", new File("xxx/1.png")) // ...
- Android-史上最优雅的实现文件上传、下载及进度的监听,androidrom开发面试题
RxHttp.postForm("http://-") //发送Form表单形式的Post请求 .add("key", "value") . ...
- springboot:实现文件上传下载实时进度条功能【附带源码】
0. 引言 记得刚入行的时候,做了一个文件上传的功能,因为上传时间较久,为了用户友好性,想要添加一个实时进度条,显示进度.奈何当时技术有限,查了许久也没用找到解决方案,最后不了了之. 近来偶然想到这个 ...
- ubuntu下linux:curl使用ftp获取服务器上指定目录的所有文件集合以及下载
curl使用ftp获取服务器上指定目录的所有文件集合以及下载 直接编译可用,注意修改测试main函数内的字符串,注释我觉得写的挺详细了,跑不起来的评论区可问 头文件 #ifndef FTP_DOWNL ...
- Android热更新方案Robust
美团•大众点评是中国最大的O2O交易平台,目前已拥有近6亿用户,合作各类商户达432万,订单峰值突破1150万单.美团App是平台主要的入口之一,O2O交易场景的复杂性决定了App稳定性要达到近乎苛刻 ...
最新文章
- 各类JDBC数据库连接方式
- 【Linux shell】sed实践(2)
- python中列表 元组 字典 集合的区别
- Linux使用错误小结(CentOS)- yum更新软件失败
- 什么是CPU密集型、IO密集型?
- 舒尔特注意力训练表格_舒尔特注意力训练,舒尔特方格练习入口
- JAVA进阶教学之(String类的常用方法)
- java版微信调小i机器人接口说明书_小i机器人微信公众平台调用api
- 谷歌的诀窍:如何取消验证码
- ASP.NET DROPDOWNLIST无刷新联动(中文URL参数处理)
- uigetfile命令的应用
- 很恶心的一个关于字符串的题目!
- 网络安全:教你五招服务器安全维护技巧
- 2020年,生活从“不易”开始
- Android下磁盘分区表损坏,硬盘分区表丢失错误怎么修复TestDisk使用教程
- 提供风声无组件上传类V2.11下载 解决图片尺寸读取问题
- 高得地图 +数据绑定(databinding) + BaseQuickAdapter 自定义地图选点!
- please insert the disc labeled ‘Ubuntu 18.04.5 LTS _Bionic Beaver_ - Release amd64 (20200806.1)‘ in
- event的用法—通知
- 解读 | 数据分析领域七大热门职业