请问uniapp里, 纯靠前端生成的blob流, 如何下载?

这个blob流不是调用后端接口返回的, 所以没有url。是纯靠前端生成的一个blob流的word文档。
想问一下该如何下载到手机并打开?H5环境和小程序。
如果创建a标签下载, 跑到小程序里就不生效了。

阅读 1.8k
1 个回答

把Blob对象转换成Base64编码字符串

let reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = function() {
 let base64data = reader.result;
};

判断是小程序环境,使用wx.fileSystemManager.writeFileSync把Base64编码数据写入临时文件中,然后使用wx.downloadFile下载保存的本地临时文件,下载成功后使用wx.openDocument打开文件

wx.fileSystemManager.writeFileSync(wx.env.USER_DATA_PATH + '/tempFile.txt', base64data.split(',')[1], 'base64');
wx.downloadFile({
 url: wx.env.USER_DATA_PATH + '/tempFile.txt',
 success: function(res) {
    if (res.statusCode === 200) {
      wx.openDocument({
        filePath: res.tempFilePath,
        success: function(res) {
          console.log('打开文档成功');
        }
      });
    }
 }
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题