关于原生微信小程序预览pdf

264 阅读1分钟

从后端返回的数据种获取base64段码

后端有两种返回的方法

(1)返回base64文件流,这个时候需要我们手动转码

(2)返回服务器文件的本地地址

拼接本地文件路径

let filePath = wx.env.USER_DATA_PATH + '/' + this.data.ObjName + '.pdf';

此处的ObjName变量为项目名称,可忽略不计,此操作只是生成一个本地文件路径

将后端传过来的base64文件流进行解码,wx.base64ToArrayBuffer()方法虽然已经停止维护了,但还是可用的

let path = wx.base64ToArrayBuffer(this.data.FileStream)

调用wx.getFileSystemManager().writeFile()方法

此方法中传入一个配置对象如下:

 wx.getFileSystemManager().writeFile({
            filePath: filePath,//保存的本地路径
            data: path,//解码后的base64文件流
            encoding: 'binary', // 指定二进制格式
            success: res => {
              // 回调成功后调用打开文件方法
              wx.openDocument({
                filePath: filePath,//打开预览的文件路径
                fileType: 'pdf', //指定为pdf文件
                showMenu: true, //true 可以右上角转发和分享
                fail: function (res) {
                  wx.toastManager.showShortToast('文件打开失败', res);
                  wx.hideLoading()
                }
              })
            },
            fail: res => {
              Toast.fail('生成失败,请重试');
            }
          });

完结