s***@sina.com
s***@sina.com
  • 发布:2023-08-17 23:01
  • 更新:2023-08-21 10:56
  • 阅读:848

【报Bug】用uni官方的升级中心查看源码uni.downloadFile下载wgt的临时文件没有后缀名,没人回答解决我一直发

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 3.8.12

手机系统: Android

手机系统版本号: Android 9.0

手机厂商: 小米

手机机型: mi8

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
 downloadTask = uni.downloadFile({    
                    url: this.url,    
                    success: res => {    
                        if (res.statusCode == 200) {    
                            this.downloadSuccess = true;    
                            this.tempFilePath = res.tempFilePath    
                            // 强制更新,直接安装    
                            if (this.is_mandatory) {    
                                this.installPackage();    
                            }    
                        }    
                    },    
                    complete: () => {    
                        this.downloading = false;    
                        this.downLoadPercent = 0    
                        this.downloadedSize = 0    
                        this.packageFileSize = 0    

                        downloadTask = null;    
                    }    
                });

操作步骤:
 downloadTask = uni.downloadFile({    
                    url: this.url,    
                    success: res => {    
                        if (res.statusCode == 200) {    
                            this.downloadSuccess = true;    
                            this.tempFilePath = res.tempFilePath    
                            // 强制更新,直接安装    
                            if (this.is_mandatory) {    
                                this.installPackage();    
                            }    
                        }    
                    },    
                    complete: () => {    
                        this.downloading = false;    
                        this.downLoadPercent = 0    
                        this.downloadedSize = 0    
                        this.packageFileSize = 0    

                        downloadTask = null;    
                    }    
                });

预期结果:

_doc/uniapp_temp_1691737727580/download/1691737742643.wgt

实际结果:

_doc/uniapp_temp_1691737727580/download/1691737742643

bug描述:

用官方的升级中心做热更下载完安装时提示WGT/WGTU文件格式错误,查看源码发现uni.downloadFile下载wgt文件后保存的临时文件没有后缀名,文件名是个时间戳
_doc/uniapp_temp_1691737727580/download/1691737742643
wgt包是HBuilderX做的,wgt包上传uniCloud云存储链接下载的,是只有我出现这个问题吗?换了一台华为手机也这样
上面是官方的升级中心的下载源码

2023-08-17 23:01 负责人:无 分享
已邀请:
余声

余声

有文件地址测试一下么,用Hello-uni 下载接口demo测试没问题的。

  • s***@sina.com (作者)

    https://mp-4dcf3228-7251-4156-9209-2b6320618f0b.cdn.bspapp.com/UNI315A8C6.wgt

    2023-08-18 12:26

  • s***@sina.com (作者)

    下载其它类型文件不会,比如apk,zip等都有后缀名,就wgt没有

    2023-08-18 12:27

  • 余声

    回复 s***@sina.com: 你这个资源是不是过期了,访问不了,还是访问上限了。有试过换别的链接嘛。

    2023-08-18 13:48

余声

余声

这是用 Helluni 下载API的demo 测试的(版本:3.8.12.20230817),你提供给的链接是无法下载的。如果你说其他文件下载没问题,那你应该要检查一下你的链接是否是能正常访问的。

  • s***@sina.com (作者)

    https://mp-4dcf3228-7251-4156-9209-2b6320618f0b.cdn.bspapp.com/UNI315A8C6.wgt

    2023-08-18 14:13

  • s***@sina.com (作者)

    链接可以访问,是unicloud云存储

    2023-08-18 14:13

  • s***@sina.com (作者)

    奇怪,为啥发出来的链接会被限制,问答社区是做了什么限制吗

    2023-08-18 14:15

  • 余声

    回复 s***@sina.com: 可以访问了,下载后他变成了.bin文件

    2023-08-18 14:18

余声

余声

不知道你是不是这个问题,至少你提供的链接下载是有问题

  • s***@sina.com (作者)

    https://mp-4dcf3228-7251-4156-9209-2b6320618f0b.cdn.bspapp.com/UNI315A8C6.wgt,用这个试下,之前的评论发出来的链接文件名是有下划线的,不知道为啥评论发出来下划线没了

    2023-08-18 14:24

  • s***@sina.com (作者)

    后面那个逗号别复制进去了

    2023-08-18 14:24

  • s***@sina.com (作者)

    我这边下载后的临时文件是啥后缀名都没有

    2023-08-18 14:26

s***@sina.com

s***@sina.com (作者)

https://mp-4dcf3228-7251-4156-9209-2b6320618f0b.cdn.bspapp.com/UNI315A8C6.wgt

DCloud_UNI_LXH

DCloud_UNI_LXH

这个问题后续会修复,临时解决方案,在 download 成功后,添加如下代码:

uni.downloadFile({  
                url: '',  
                success(res) {  
                                       // success 回调中包含的代码就是你要添加的  
                    plus.io.resolveLocalFileSystemURL(res.tempFilePath, function(entry) {  
                        entry.getParent((parent) => {  
                            entry.copyTo(parent, `new_wgt_${Date.now()}.wgt`, (res) => {  
                                console.log('copyTo success res: ', res);  
                            }, (e) => {  
                                console.log('copyTo fail e: ', JSON.stringify(e));  
                            })  
                        }, (e) => {  
                            console.log('getParent fail e: ', JSON.stringify(e));  
                        })  
                    }, function(e) {  
                        console.log("Resolve file URL failed: " + e.message);  
                    });  
                },  
                fail(e) {  
                    console.log('e: ', e);  
                }  
            })

这个代码的作用是用来在下载的临时目录中重新创建一个 wgt 的文件,你可以添加后试试看。

注意
在安装的时候要使用新创建的 wgt 文件名,注意安装路径

  • s***@sina.com (作者)

    亲测正式升级可以用,自定义基座wgt升级 是会白屏 正常的吗

    2023-08-20 00:06

要回复问题请先登录注册