反正也不知道从哪个版本开始就发现更新wgt包时无法获取下载文件总大小了。
大概从3.0版或2.9几版开始就不能用了,刚开始以为BUG会修复,
结果等到了3.0.7都没有修复这个BUG。
以前是直接下载文件如:
http://xxxx.com/sss.wgt
用下载API就可以获取文件总大小,后来出现BUG后,这个就不行了。
现在可以通过主动输出文件来获取,但只适合一个两个的文件,如果直接要下载图片,这样做是行不通的。
临时解决如下:
PHP后端,输出要更新的wgt包:
final function appdown(){
header('Content-Type: application/octet-stream');
$files=$_SERVER['DOCUMENT_ROOT'].'/appdown/app.wgt';
$filesize = filesize($files); //获得文件大小
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: pre-check=0, post-check=0, max-age=0');
header('Content-Transfer-Encoding: binary');
header('Content-Encoding: none');
header('Content-type: application/force-download');
header('Content-length: '.$filesize);//此处是重点
header('Content-Disposition: attachment; filename="jingliang.wgt"');
readfile("$files");
}
H5+用plus.downloader.createDownload来监听下载进度
uniapp有bug,无法监听下载进度事件,也可用plus.downloader.createDownload来操作下载
另外还有个BUG就是,plus.downloader.createDownload下载监听时的进度与实际下载进度不相符,例如实际下载10秒就完成了,但是监听进度要20秒才会完成反应太慢了,这在之前版本上好像是没有这种太明显的慢的现象的【刚开始怀疑这个可能是进度条30毫秒才走1步造成的,后来发现状态3的监听基本是跟不上下载的速度的,这在以前是没有这个情况的】。
但是尽管这种办法能获取文件大小,也是没有用的,因为只要它下载完成就会调起自动安装,此时进度条还需要N秒才能走完,下载进度监听根本不到100%。。。
还是等官方修复这个BUG吧,之前都可以直接获取下载文件的大小。
1 个评论
要回复文章请先登录或注册
大前端小王子