Ionic Native视频上传了一个损坏的文件



我的Ionic Native应用程序目前一直存在问题。

我正试图上传一个视频文件到firebase存储,我用媒体捕获:处理录制

"离子天然/介质捕获":"5.36.0〃">

到目前为止还不错。。当我尝试将这个新文件上传到firestore时,文件总是上传损坏的。。。或者文件大小只有9字节!??

这是我现在使用的代码:

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());
})
}) 

注意:对于上下文,我曾尝试使用本机文件readAsDataURL,但承诺从未解决。。在控制台中,我看到它在处理,但最后它卡住了,永远无法解决。。

  • 离子6.16.3
  • 角芯12.1.1
  • 节点14.15.0

非常感谢任何帮助或指导,我已经在这一点上呆了好几天了。。。

[已解决]

已解决:现在已解决。。。Filesystem.readFile的结果是base64,所以我所要做的就是将这个结果处理为base64,然后将其转换为blob,这样就成功地上传了一个有效的视频文件。

最新更新