微信小程序保存excel文件到本地

调用接口获取到一个桶内的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,这样可以让用户手动点击右上角的菜单进行手动保存到手机(保存到手机的其他目录)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。