Ionic 离子原生视频上传损坏的文件

6g8kf2rb  于 2023-10-14  发布在  Ionic
关注(0)|答案(1)|浏览(144)

我的Ionic Native应用程序目前存在持续问题。
我正试图上传视频文件到firebase存储,我处理与媒体捕获记录:
“@ionic-native/media-capture”:“^5.36.0””
到目前为止还不错。当我尝试上传这个新文件到firestore文件总是上传损坏.或者文件大小只有9000!??
这是我现在使用的代码:

this.mediaCapture.captureVideo({duration: 10, quality: 0}).then(
        (data: MediaFile[]) => {
          if (data.length > 0) {
            let originname = data[0].fullPath.substr(data[0].fullPath.lastIndexOf('/') + 1);
            let originpath = data[0].fullPath.substr(0, data[0].fullPath.lastIndexOf('/') + 1);            
            
            let alerta = this.alerts.create({
              buttons: ['ok'],
              message: this.file.externalDataDirectory
            });
            alerta.then(set => set.present());
            this.file.copyFile(originpath, originname, this.file.externalDataDirectory, 'video.mp4')
            .then(result =>{
              //let video = (document.getElementById('myvideo') as HTMLVideoElement).src = result.nativeURL;
           

              //let path =this.webview.convertFileSrc(result.nativeURL);
              // this.video = path;

              // let alert = this.alerts.create({
              //   buttons: ['ok'],
              //   message: path
              // });
              // alert.then(set => set.present());
              
              
              // let videoname = path.substr(path.lastIndexOf('/') + 1);
              // let videopath = path.substr(0, path.lastIndexOf('/') + 1);        
              const data = Filesystem.readFile({
                path: result.nativeURL
              })
              .then(data =>{
                let blob= new Blob([data.data], {type: 'video/mp4'});
                let ref = this.storage.storage.ref().child('videoTests').child('video.mp4')
                ref.put(blob).then(
                  result =>{
                    let url = this.storage.ref('/videoTests/'+588+'.mp4').getDownloadURL();
                    url.subscribe(result =>{
                      console.log(result);
                      let alert = this.alerts.create({
                        buttons: ['ok'],
                        message: result
                      });
                      alert.then(set => set.present());
                      })
                  })

注意:对于上下文,我尝试使用本机File readAsDataURL,但promise永远不会解析。在控制台,我看到它的处理,但在最后,它只是卡住,从来没有解决。

  • 爱奥尼亚6.16.3
  • Angular Core 12.1.1
  • 节点14.15.0

任何帮助或指导是非常感谢我有几天卡在这一点上现在.

[已解决]

bkkx9g8r

bkkx9g8r1#

解决:这是NOWS解决…读取文件的结果是base64,所以我所要做的就是把这个结果作为base64处理,然后把它转换成一个blob,这样就成功地上传了一个有效的视频文件。

相关问题