调用接口获取到一个桶内的excel的url,现在需要下载并预览
按照微信小程序的写法,应该先下载
下载远程文件
wx.downloadFile({
url: '远程地址',
success:(data)=>{
if(data.statusCode === 200){
// 此时 data.tempFilePath 是临时的地址,小程序退出后再进就没了
console.log(data.tempFilePath);
}
}
})
此时 data.tempFilePath 是临时的地址,小程序退出后再进就没了,需要在success回调里把临时文件转成缓存文件
临时文件转缓存文件
const filePath = `${wx.env.USER_DATA_PATH}/自定义文件名.xlsx`
wx.getFileSystemManager().saveFile({
tempFilePath: data.tempFilePath,
filePath,
success: (res)=>{
// 保存的缓存文件地址
console.log(res.savedFilePath)
}
});
这里要额外说明几个点
-
wx.env.USER_DATA_PATH
这个目录是微信官方给的,可以让开发者进行读写的目录,微信不让开发者用代码直接保存到手机里的其他目录 -
wx.getFileSystemManager().saveFile
保存到的地方是临时的沙箱内,所以他是缓存文件,每个微信号互相隔离,该缓存文件随着小程序删除掉就会跟着一起丢失 -
自定义文件名
的作用: 当后面openDocument时,可以自动生成对应文件名的标题
打开文档预览
上一步得到缓存文件的地址了后,就可以在success回调里打开文档
wx.openDocument({
filePath: res.savedFilePath,
showMenu: true,
success: () => {
},
});
这里的showMenu一定要设置成true,这样可以让用户手动点击右上角的菜单进行手动保存到手机(保存到手机的其他目录)