2***@qq.com
2***@qq.com
  • 发布:2020-01-07 19:26
  • 更新:2023-12-07 11:39
  • 阅读:6562

uniapp 下载无法触发下载进度条监听

分类:uni-app

const downloadTask = uni.downloadFile({
url: 'http://www.example.com/file/test', //仅为示例,并非真实的资源
success: (res) => {
if (res.statusCode === 200) {
console.log('下载成功');
}
}
});

downloadTask.onProgressUpdate((res) => {
console.log('下载进度' + res.progress);
console.log('已经下载的数据长度' + res.totalBytesWritten);
console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);

// 测试条件,取消下载任务。  
if (res.progress > 50) {  
    downloadTask.abort();  
}  

});

按照官方示例,无法监听下载进度条
PS:我已换成我自己的服务器APK都无法监听下载进度条,只能提示出下载完成

测试手机 :
小米8
LG v40

2020-01-07 19:26 负责人:无 分享
已邀请:
l***@163.com

l***@163.com - 老猿

跟踪进度根本就是摆设,没用,亲测,dowloadFile已经下载完成,执行success回调,进度还没完,差距较大,3小时血的教训,希望相关人员看看。for(想死的快){继续用uni-app开发,亲测;}

  • 1***@qq.com

    补充测试,确实先执行的success回掉,进度还没完成。。。

    2021-01-27 18:03

3***@qq.com

3***@qq.com

                           const dtask = plus.downloader.createDownload( url, {}, function ( d, status ) {    
                                if ( status == 200 ) { // 下载成功    
                                    var path = (d.filename);    
                                    // 安装下载的apk文件  
                                    plus.runtime.openFile(path);  
                                } else {//下载失败    
                                    alert( "Download failed: " + status );     
                                }      
                            });    
                            uni.showModal({  
                                title:'版本更新',  
                                content:'app有新版更新,获取更好应用体验请点击下载更新',  
                                confirmText:'下载',  
                                success: (res) => {  
                                    if(res.confirm) {  
                                        dtask.start();   
                                        let prg = 0;  
                                        let showLoading = plus.nativeUI.showWaiting("正在下载");  
                                        dtask.addEventListener('statechanged', function(task, status) {  
                                            // 给下载任务设置一个监听 并根据状态  做操作  
                                            switch (task.state) {  
                                                case 1:  
                                                  showLoading.setTitle("正在下载");  
                                                  break;  
                                                case 3:  
                                                  prg = parseInt((parseFloat(task.downloadedSize) / parseFloat(task.totalSize)) * 100);  
                                                  showLoading.setTitle("  正在下载" + prg + "%  ");  
                                                  break;  
                                                case 4:  
                                                   plus.nativeUI.closeWaiting();  
                                                    //下载完成  
                                                  break;  
                                            }  
                                        })  
                                    }  
                                }  
                            })
  • 有问

    plus以前有进度,上了3.0A版本后,发现也无法获取文件大小了,导致没法计算总进度。

    2021-01-14 09:18

  • l***@163.com

    回复 有问: 已经给官方提建议,把文件大小按参数传入,但是,官方没回应!!!!!!!!

    2022-09-01 16:37

  • 有问

    回复 l***@163.com: 不知道为什么,反正就是没进度,后来直接输出数据,并设置大小。但还是差距太大,只能获取个大概大小,然后就直接显示下载完成了。

    2022-09-06 10:19

l***@163.com

l***@163.com - 老猿

希望相关人员测试下,在写文档前!别意淫,简单的混编,uni-app还可以,有些复杂程度的还是绕道吧,不要当小白鼠。

  • 1***@qq.com

    请问一下 你之后弄好了吗

    2020-04-01 17:18

  • 3***@qq.com

    同问有解决吗

    2020-08-21 14:54

Fancye

Fancye

使用小米mix3测试,上传文件测试。
onProgressUpdate 得进度100得时候,上传success还没有返回成功!!!

2***@qq.com

2***@qq.com (作者) - 咸鱼王

无法触发进度条问题,服务器端没有返回文件的具体大小,需要服务器端设置返回文件的具体大小才可以

  • 残阳曦月

    服务器端设置返回文件的具体大小之后怎么监听呢?替换预期需要下载的数据总长度值?感觉下载进度一直再跑!你怎么弄得,求助!

    2020-03-24 08:34

  • 1***@qq.com

    请问一下 就是一个下载文件链接 在哪设置返回文件的具体大小呢

    2020-04-01 17:21

1***@qq.com

1***@qq.com - 魏先生

我在app热更新时(wgt包),计算更新进度,无法监听到更新进度,以前整包更新(apk)是可以监听的,后来踩了一个小时的坑,发现iis服务器上,没有添加对应的文件类型,添加上对应的文件类型后,就可以计算文件的大小,监听更新进度了

  • 有问

    这个也没用了。以前直接下载文件是可以获取的,估计官方更新过程中出BUG了,也没发现。

    2021-01-14 09:23

九涯

九涯 - 一个90后正在编程路上摸爬滚打的青年

我早已发现,官方请出来回答这个问题!!!!!

youngswelli

youngswelli

烂尾楼?

d***@qq.com

d***@qq.com

task.totalSize 为0 是什么,这是bug吗/

  • 有问

    BUG。之前是管用的。更新了3.0版后,突然发现某一天的版本无效了。。。

    2021-01-14 09:24

alchemist

alchemist - 010

onProgressUpdate用不了有点难受,希望官方早点解决这个问题

大前端小王子

大前端小王子 - 软件开发工程师

2020年前版本还是可以获取到进度的,怎么今年就不行了

将博

将博

难道我是入坑了>呵呵

z***@163.com

z***@163.com

1***@qq.com

1***@qq.com

2022年都块过完了,这个bug还没修复呢

7***@qq.com

7***@qq.com

目前测下来,下载文件大了就监听不了,因为我目前正式下载的文件大概几十MB没办法触发监听,但把下载路径换成一张网络图片后就可以触发监听了,楼主这个问题解决了吗,方便提供一个解决方法吗

要回复问题请先登录注册