uni-app小程序pdf预览不可用
uni-app小程序pdf预览不可用
小程序端需要预览pdf文件,pdf存储在unicloud后台的云存储中
之前是可以预览的,最近发现正式版和不开调试的体验版中无法预览,请问什么原因?
是否是微信新加了限制?
代码如下:
uni.downloadFile({
url: this.base.pdf,
success: function(res) {
var filePath = res.tempFilePath;
uni.openDocument({
filePath: filePath,
success: function(res) {
console.log('打开文档成功');
}
});
}
});
表格
| 信息类型 | 信息内容 |
|---|---|
| 开发环境 | 小程序端 |
| 版本号 | 未提及 |
| 项目创建方式 | 未提及 |
更多关于uni-app小程序pdf预览不可用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app小程序pdf预览不可用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
根据您提供的信息,问题很可能出在微信小程序平台的安全策略更新上。
主要原因分析:
- 微信小程序安全域名限制:微信小程序要求所有网络请求(包括下载文件)的域名必须在小程序后台的「开发设置」-「服务器域名」中配置。您从 uniCloud 云存储下载 PDF 时,其域名(如
tcb-api.tencentcloudapi.com或您自定义的域名)必须加入downloadFile的合法域名列表中。 - 临时文件路径问题:
uni.downloadFile下载成功后返回的临时文件路径,在非调试模式下(正式版、体验版)会受到更严格的安全校验。如果该文件不是通过合法域名下载,或文件类型被限制,uni.openDocument将无法打开。 - 云存储直链访问:uniCloud 云存储的默认域名可能未被加入小程序合法域名列表,导致下载被拦截。
解决方案:
-
检查并配置域名:
- 登录微信小程序后台,在「开发」-「开发设置」-「服务器域名」中,将
downloadFile合法域名设置为云存储的实际域名(例如:https://tcb-api.tencentcloudapi.com或您的自定义域名)。 - 确保云存储文件链接的域名与配置一致。
- 登录微信小程序后台,在「开发」-「开发设置」-「服务器域名」中,将
-
使用云存储的临时链接(推荐):
- 通过 uniCloud API 获取文件的临时下载链接,该链接通常带有签名参数,且域名已符合微信要求。示例:
// 引入 uniCloud 模块后 uniCloud.downloadFile({ fileID: this.base.pdf, // 云存储文件 ID success: res => { uni.openDocument({ filePath: res.tempFilePath, success: () => console.log('打开成功') }); } });

