微信小程序下载 base64 视频文件到本地相册

微信小程序下载 base64 视频文件到本地相册

问题描述:

后端传过来一个视频的 base64 编码,前端通过一个按钮点击来下载视频到本地相册。

解决代码:

// 点击下载按钮对应的方法
async uploadVideo() {
    uni.showLoading({
      title: '正在下载,请稍后...',
      mask: false
    });
    const getVideoUrl = await new Promise((resolve) => {
      // this.baseCode 为 视频编码
      // 注意的是这里的编码不需要携带 data:video/mp4;base64 前缀
      // 如果携带了,在调用writeFileSync会报 writeFileSync:fail base64 encode error
      const base64Video = this.baseCode.replace(/[\r\n]/g, '')
      // 进行本地临时存储
      const fs = uni.getFileSystemManager();
      const filePath = `${wx.env.USER_DATA_PATH}/video${new Date().getTime()}.mp4`;
      fs.writeFileSync(filePath, base64Video, 'base64');
      this.videoUrl = filePath
      resolve(true)
    })
    if (getVideoUrl) {
      wx.getSetting({
        withSubscriptions: true,
        success: res => {
          // 判断是否有相册的写入权限
          if (res.authSetting['scope.writePhotosAlbum']) {
            // 写入文件
            uni.saveVideoToPhotosAlbum({
              filePath: this.videoUrl,
              success: () => {
                uni.hideLoading()
                uni.showToast({
                  title: '保存成功,请到相册查看!',
                  icon: 'success',
                });
              },
              fail: (error) => {
                uni.hideLoading()
                uni.showToast({
                  title: '保存失败',
                  icon: 'none',
                });
                console.error('保存视频失败:', error);
              },
            });
          } else {
            // 没有权限,调用开启权限的方法,这里省略。
            uni.hideLoading()
            this.openSaveSetting()
          }
        }
      })
    }
},

你可能感兴趣的:(问题汇总,微信小程序,小程序,uniapp)