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

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

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 3.2.3

手机系统: 全部

手机厂商: 华为

页面类型: vue

打包方式: 云端

项目创建方式: 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

该问题目前已经被锁定, 无法添加新回复