cordova FileReader不阅读记录的视频文件在离子

wztqucjr  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(155)

我想从Cordova Media Capture的captureVideo()方法获得的视频文件中获取base64。我可以使用resolveLocalFilesystemUrl()方法获取文件,但当我尝试使用FileReader读取该文件时,没有回调事件,我也没有得到任何错误.我发现从这个link从媒体捕获获得的文件在阅读有问题.我试图阅读文件使用文件插件的readAsDataURL()方法,但没有成功。我也试图创建一个objectURL使用URL。ObjectURL(file)方法,但得到错误。有没有其他方法来获得base64或缩略图?

convertMediaFileToBlob(path: string){
    this.file.resolveLocalFilesystemUrl(path)
    .then((fileEntry:any) => {
        fileEntry.file((file:any)=>{

          let reader = new FileReader();
          reader.onloadend = () => {
            console.log('onloadend: ',reader.result)
            
          };
          reader.onerror = (error) => {
            console.log('onerror error: ',error)
          };
          reader.onabort = () => {
            console.log('onabort')
          };
          reader.readAsDataURL(myfile);
         
        })
    })
    .catch((e:any) => {
      console.log('err: ',e)
    });
  }
async recordVideo(){
    let options: CaptureVideoOptions = { limit: 1 }
    this.mediaCapture.captureVideo(options)
      .then(
        (data: any) => {
          const path = data[0]?.fullPath
          this.convertMediaFileToBlob(path)
        },
        (err: CaptureError) => console.error(err)
      );
}
x6492ojm

x6492ojm1#

不确定,但如果你使用cordovas readDataAsURL而不是FileReader,

convertMediaFileToBlob(path: string) {
  this.file.resolveLocalFilesystemUrl(path)
    .then((fileEntry: any) => {
      fileEntry.file((file: any) => {
        this.file.readAsDataURL(file.localURL).then((base64: any) => {
          console.log('Base64: ', base64);
        }).catch((error: any) => {
          console.log('Read Error: ', error);
        });
      });
    })
    .catch((e: any) => {
      console.log('Resolve Error: ', e);
    });
}

async recordVideo() {
  let options: CaptureVideoOptions = { limit: 1 };
  this.mediaCapture.captureVideo(options)
    .then(
      (data: any) => {
        const path = data[0]?.fullPath;
        this.convertMediaFileToBlob(path);
      },
      (err: CaptureError) => console.error(err)
    );
}

这段代码将文件作为数据URL读取,这将给予文件的Base64编码

相关问题