项目需要要做个下载功能,下载PDF版发票并保存在本地文件中。
下载文件:用uni.downloadFile或wx.downloadFile下载文件,拿到返回文件的本地临时路径。
保存文件:
1.IOS端
ios不能直接下载在本地,需用用户自己复制下载链接,后在Safari浏览器中预览下载。js功能代码如下:
//先弹窗提醒用户复制链接uni.showModal({title: '复制发票链接',content: '请点击确定,复制发票链接,在Safari浏览器中预览下载',showCancel: false,success: function (res) {if (firm) {pyLink(item)}}});//复制链接copyLink(item){uni.setClipboardData({data: item, // 要复制的路径success: function(res) {ClipboardData({success: function(data) {uni.showToast({title: '复制成功'});},fail: function(data1) {console.log(data1,'复制回调'); }});}});}
2.安卓端
存储文件的话,建议使用FileSystemManager对象中的方法,旧的uni.saveFile不维护了。
FileSystemManager是微信小程序文件管理器,通过 wx.getFileSystemManager 获取。但是保存文件后,返回的存储后的文件路径 (本地路径)格式是wxfile://store_eXXXXXXX,很难找到,在网上看华为手机存储的路径有三个,三个路径“tencent/MicroMsg/WeiXin”、“tencent/MicroMsg/Download”、“Android/t.mm/MicroMsg/Download”,在手机上没找到,所以用了别的方法。
方法:使用wx.getFileSystemManager().saveFile下载文件,再使用wx.openDocument()打开文件,配置一定要加上showMenu字段,这样打开预览的文件右上角就会出现···,点击···即可保存文件。这样文件会直接保存在手机下载管理器中,非常容易找到。
具体使用的js功能代码如下:
uni.downloadFile({url: item,// 文档地址success: (data) => {if (data.statusCode == 200) {wx.getFileSystemManager().saveFile({tempFilePath: pFilePath, //临时路径success: function (res) {// 保存路径wx.openDocument({filePath: res.savedFilePath,showMenu: true,success: function(res) {},fail(error) {}})}});}}, fail: (err) => { showToast("失败请重新下载" )},});
本文发布于:2024-01-27 19:56:54,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063566122316.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |