方案一:采用微信提供的API:wx.downloadFile + wx.openDocument
方案二:出于安全问题的考虑,后台直接返回url不安全,所以更换成返回流形式的数据来解决:wx.getFileSystemManager + wx.openDocument
方案一:
toPdf() {
uni.showLoading({
title: '加载中...',
})
uni.downloadFile({
url: '后台直接返回的url路径',
success: function(res) {
var filePath = res.tempFilePath;
setTimeout(() => {
uni.openDocument({
filePath: filePath,
showMenu: true,
success: function(res) {
uni.$showMsg('打开文档成功')
},
fail: function(res) {
console.log('open', res);
uni.$showMsg('找不到文件')
}
}, 3000);
})
},
fail: function(res) {
console.log('down', res);
uni.$showMsg('文档下载失败')
}
});
},
}
}
方案二:
//后台返回流文件
toviewBtn(index, id) {
this.id = id
uni.showLoading({
title: '加载中...',
})
uni.request({
url: uni.$http.baseUrl + '调用的后台接口',
method: "GET",
success: rest => {
// console.log(rest, '-----');
if (rest.statusCode == 200) {
if (rest.data.Status == 200) {
const fs = wx.getFileSystemManager(); //获取全局唯一的文件管理器
fs.writeFile({ // 写文件
filePath: wx.env.USER_DATA_PATH +
"/filename.pdf", // wx.env.USER_DATA_PATH 指定临时文件存入的路径,后面字符串自定义
data: rest.data.PdfInfo,
encoding: "base64", //二进制流文件必须是 binary
success(res) {
wx.openDocument({
filePath: wx.env.USER_DATA_PATH + "/filename.pdf", //拿上面存入的文件路径
showMenu: true,
success: function(res) {
setTimeout(() => {
wx.hideLoading()
}, 500)
}
})
},
});
} else {
uni.$showMsg(rest.data.Message)
}
}
}
})
}
版权声明:本文为原创文章,转载请附上原文出处链接和本声明
本文链接:https://www.jianshu.com/writer#/notebooks/48898357/notes/88678406
方案二参考链接地址: https://blog.csdn.net/mythInternet/article/details/109100864