1***@qq.com
1***@qq.com
  • 发布:2021-10-18 16:00
  • 更新:2021-10-18 18:34
  • 阅读:614

【报Bug】uniapp 下载文件 downloadTask.onProgressUpdate 在下载自定义路径的wgt包时监听不到

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10 专业版 20H2

HBuilderX类型: 正式

HBuilderX版本号: 3.2.3

手机系统: 全部

手机厂商: 华为

页面类型: vue

nvue编译模式: fast

打包方式: 云端

项目创建方式: HBuilderX

测试过的手机:

华为mate40pro,iphone 12 pro max, Honor 8c

示例代码:
<template>  
    <view class="content">  
        <image class="logo" src="/static/logo.png"></image>  
        <view class="text-area">  
            <text class="title">{{title}}</text>  
      <text>({{downloadedSize}}/{{packageFileSize}}M)</text>  
        </view>  
    </view>  
</template>  

<script>  
  let downloadTask = null  
    export default {  
        data() {  
            return {  
                title: 'Hello',  
        downloadedSize: 0,  
        packageFileSize: 0,  
        tempFilePath: ''  
            }  
        },  
        onLoad() {  
      this.downloadPackage()  
        },  
        methods: {  
      downloadPackage() {  
        //下载包  
        downloadTask = uni.downloadFile({  
          // 无法监听到下载进度  
            // url: 'https://fil.xbsjipfs.com/down/6666.wgt',  
          // 可以监听到下载进度  
            // url: 'https://fil.xbsjipfs.com/xbsj.apk',  
          // 可以监听到下载进度(升级中心云函数上传升级包后的路径)  
            url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-4f945785-60e1-483a-9f14-12e21fe2046c/36ce77aa-93a8-4fd7-ad34-c9583cebcc02.wgt',  
            success: res => {  
            console.log(res);  
                if (res.statusCode == 200) {  
              console.log(9999);  
                    this.downloadSuccess = true;  
                    this.tempFilePath = res.tempFilePath  

                    // 强制更新,直接安装  
                    if (this.is_mandatory) {  
                        this.installPackage();  
                    }  
                }  
            },  
            fail: () => {  
            console.log(99999);  

                // this.downLoadPercent = 0  
                this.downloadedSize = 0  
                this.packageFileSize = 0  

                downloadTask = null;  
            }  
        });  

        downloadTask.onProgressUpdate(res => {  
          console.log(JSON.stringify(res), '进度条');  
            // this.downLoadPercent = res.progress;  
            this.downloadedSize = (res.totalBytesWritten / Math.pow(1024, 2)).toFixed(2);  
            this.packageFileSize = (res.totalBytesExpectedToWrite / Math.pow(1024, 2)).toFixed(2);  
        });  
      },  
        }  
    }  
</script>  

<style>  
    .content {  
        display: flex;  
        flex-direction: column;  
        align-items: center;  
        justify-content: center;  
    }  

    .logo {  
        height: 200rpx;  
        width: 200rpx;  
        margin-top: 200rpx;  
        margin-left: auto;  
        margin-right: auto;  
        margin-bottom: 50rpx;  
    }  

    .text-area {  
        display: flex;  
        justify-content: center;  
    }  

    .title {  
        font-size: 36rpx;  
        color: #8f8f94;  
    }  
</style>  

操作步骤:

下载测试压缩包或者复制代码示例

预期结果:

下载文件监听到自定义的wgt包下载过程

实际结果:

三种地址都可以正常下载到文件,但是自定义的wgt包下载路径在下载时无法监听到下载进度

bug描述:

2021-10-18 16:00 负责人:无 分享
已邀请:
DCloud_Android_ST

DCloud_Android_ST

与下载文件大小有关。猜测网速快的话一下就完毕了 所以没有进度直接返回下载完毕

  • 1***@qq.com (作者)

    大小也试过一个近5M的wgt包,一样的,下载可以下载只是监测不到下载进度,还有就是同一个文件如果把后缀名改为apk就可以检测到了

    2021-10-18 18:38

  • 1***@qq.com (作者)

    辛苦好哥哥们帮我看看这个问题,官方的升级中心因为再国外无法访问到的原因现在要换升级的接口

    2021-10-18 18:40

  • DCloud_Android_ST

    回复 1***@qq.com: 进度需要获取到文件大小 我测试了一下发现Content-Length为空你们配置一下再试试

    2021-10-18 18:44

  • 1***@qq.com (作者)

    回复 DCloud_Android_ST: 问题解决了,就是这个content-length的原因,可能是wgt这种不常规的文件服务器内置没有配置.在服务器里单独配置后可以了.谢谢

    2021-10-19 13:54

要回复问题请先登录注册