uni-app 微信小程序环境下调用uni.downloadFile Android手机下载不了的问题

uni-app 微信小程序环境下调用uni.downloadFile Android手机下载不了的问题

项目信息 详情
产品分类 uniapp/App
PC开发环境 Windows
PC开发环境版本号 win10
HBuilderX类型 正式
HBuilderX版本号 3.1.22
手机系统 Android
手机系统版本号 Android 10
手机厂商 联想
手机机型 小新
页面类型 vue
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

uni.downloadFile({  
    url: i.val,  
    success(res) {  
        // 没执行  
        var filePath = res.tempFilePath  
        that.modalShow = false  
        uni.openDocument({  
            filePath: filePath,  
            success(res) {  
                console.log('打开文档成功')  
            },  
            fail(err) {  
                uni.showToast({  
                    title: err,  
                    duration: 10000  
                })  
            }  
        })  
    },  
    fail: (err) => {  
        // 没执行  
        uni.showToast({  
            title: err,  
            duration: 10000  
        })  
    },  
    complete: () => {  
        // 执行了  
    }  
})  

预期结果:

  • success里面能正常返回临时地址

实际结果:

  • success不能返回临时地址,fail里面没有报错

bug描述:

在微信小程序环境里,调用uni.downloadFile,Android手机 下载不了。success 和 fail 不会返回东西,complete 执行了。

在微信小程序开发环境下是可以下载的,但是上传到微信平台上(体验版和线上版本都不可以下载)

合法域名都已配置


更多关于uni-app 微信小程序环境下调用uni.downloadFile Android手机下载不了的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

直接新建一个微信小程序(非 uni-app)单独测试一下是否仍然存在,如仍然存在此问题,到微信小程序社区反馈一下。

更多关于uni-app 微信小程序环境下调用uni.downloadFile Android手机下载不了的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


测试了,微信小程序确实也是打不开…

回复 sallyxixi: 请问大佬解决了吗?我也遇到了

根据你的描述,问题出现在微信小程序平台(体验版和线上版),而开发工具中正常。这通常与微信小程序的网络请求安全策略有关。

核心问题分析:

  1. 域名校验:微信小程序要求所有网络请求的域名必须在小程序管理后台的「开发」-「开发管理」-「开发设置」-「服务器域名」中配置。即使你在代码中使用了合法域名,也必须在此处添加下载文件的域名。

    • 请登录微信小程序后台,检查 downloadFile 使用的 url 域名是否已加入 downloadFile合法域名 列表(注意:request 和 downloadFile 的域名配置是分开的)。
  2. HTTPS 要求:微信小程序正式环境要求所有网络请求必须使用 HTTPS。请确认你的下载链接是 https:// 开头,且 SSL 证书有效。

  3. 文件类型限制:微信小程序对 downloadFile 下载的文件类型有安全限制。某些文件类型(如 .apk, .exe 等可执行文件)可能被阻止。请确认你下载的文件类型是否被允许。

排查步骤:

  1. 检查微信后台配置

    • 登录 微信公众平台
    • 进入「开发管理」-「开发设置」-「服务器域名」。
    • 确保你的下载文件域名已添加到 downloadFile合法域名 列表中。
  2. 检查 URL 协议

    • 确保 urlhttps:// 开头。正式环境不支持 http://
  3. 添加网络请求超时

    • uni.downloadFile 参数中添加 timeout 设置,避免因网络慢导致无回调。
    uni.downloadFile({
        url: i.val,
        timeout: 10000, // 10秒超时
        success(res) { ... },
        fail(err) { ... }
    });
回到顶部