老规矩先上代码(开箱即用):
export function downloadPdf(url) {
/**
* url 下载链接
* https://blog.csdn.net/qq_42611074/article/details/126520598?share_token=82cdef9f-8313-4c2d-becd-dad7299b0c98
* https://blog.csdn.net/weixin_45122120/article/details/107956432
* 参考链接
***/
return new Promise((resolve, reject) => {
if (uni.getSystemInfoSync().platform === 'ios') {
// 微信小程序 IOS
// #ifdef MP-WEIXIN
return wx.downloadFile({
url,
success: (res) => {
wx.getFileSystemManager().saveFile({
tempFilePath: res.tempFilePath,
success: (resp) => {
wx.openDocument({
filePath: resp.savedFilePath,
fileType: 'pdf',
showMenu: true,
success: () => {
resolve()
},
fail: (e) => {
reject('打开文件失败')
}
})
},
fail: (e) => {
reject('保存文件失败', e)
}
})
},
fail: () => {
reject('下载文件失败')
}
})
// #endif
}
// 微信小程序/APP - 安卓 ; APP IOS
uni.downloadFile({
url,
success: (res) => {
uni.openDocument({
filePath: res.tempFilePath,
fileType: 'pdf',
showMenu: true,
success: function(res) {
resolve()
},
fail: () => {
reject()
}
})
},
fail: () => {
reject()
}
})
})
}
除了IOS的微信小程序需要额外保存文件,其他都是一样的逻辑,下载 -> 打开
ios端文件名如果有中文可能会报错打不开,需要使用 escape转码文件路径