微信开放文档提供了 API 下载文件 wx.downloadFile wx.saveFile
downloadFile 其实是将文件下载下来,放到了一个临时空间,success 返回文件的本地临时路径
但是这个临时路径其实是微信沙盒的路径,并不是手机本地的路径。
saveFile 开发文档写的是保存文件到本地,我以为是保存到手机,其实是我想多了,打印了一下地址。
downloadFile 和 saveFile 调用成功后返回的地址都是以 wxfile:// 开头的,感觉这个是微信自己的内部存储空间。(但其实android是可以查询到的:内部存储/Android/data/com.tencent.mm/MicroMsg/wxanewfiles/***/文件名 ,中间那个***是个长的字符串,不知道什么规则生成的;ios是无法查询到具体的文件)
回头看看,需求是下载Excel文件,到本地,怎么实现呢
查询了好多社区文档,看到大家都遇到了这个问题,各种骚方案,如下:
https://developers.weixin.qq/community/develop/doc/000aa09ca30a9031462990b3b51000
我结合需求想了一个中间方案:(其实下载文件也就是想要发送给朋友)
// 将下载文件的地址粘贴到剪贴板,提示用户去手动下载
Taro.setClipboardData({
data: url,
success: function (res) {
Taro.showToast({
title: '下载地址已粘贴到剪贴板,请前往浏览器下载!',
icon: 'none',
duration: 2000,
});
}
})
//通过wx.openDocument 打开文档,openDocument 提供了一个属性showMenu 显示右上角的菜单
wx.downloadFile({
url: url,
success (res) {
if (res.statusCode === 200) {
const filePath = res.tempFilePath;
wx.openDocument({
filePath: filePath,
showMenu: true,
success: function (res) {
console.log(res, '打开文档成功');
}
});
}
}
})
最后发现右上角的菜单有分享朋友的功能
用户可以通过分享发送给朋友,也可以通过剪切板的内容到浏览器中手动下载文件。
更多推荐
微信小程序下载Excel到本地
发布评论