Ionic 3 - Как загрузить видеофайл из галереи в хранилище Firebase - PullRequest
0 голосов
/ 28 июня 2018

Я нашел много решений для загрузки изображений и аудио в хранилище Firebase из Ionic 3, но ни одного решения для загрузки видеофайлов из галереи в хранилище Firebase. Я изучал «Камера», «Файл», «Путь к файлу», плагины и т. Д., Но, похоже, не нашел правильного решения для загрузки файла mp4 из моей галереи в хранилище.

Сначала я попробовал (но это не сработало):

uploadpage.ts

  async selectVideo(){
    const options: CameraOptions = {
      quality: 100,
      destinationType: this.camera.DestinationType.DATA_URL,
      sourceType: this.camera.PictureSourceType.PHOTOLIBRARY,
      // encodingType: this.camera.EncodingType,
      mediaType: this.camera.MediaType.ALLMEDIA
    }
    let result = await this.camera.getPicture(options);
    result.then((uri) => {
      this.spinner.load();
  this.selectedVideo = uri;
 }, (err) => {
  // Handle error
  this.helper.presentToast(err.message);
 });
  }




  //Upload video
 uploadVideo(){
    if(this.selectedVideo){
      this.spinner.load();
    //upload task 
     let upload= this.api.uploadVideo(this.selectedVideo)
     upload.then().then(res => {
       let otherData={title:this.title,category:this.type, thumbnail:this.thumbnail}
       this.api.storeInfoToDatabase(res.metadata, otherData).then(()=>{
       this.spinner.dismiss();
       })
     })

    }

  }

api.ts

uploadVideo(data): AngularFireUploadTask{
  let newName = `${new Date().getTime()}.mp4`;
  let footballerId = JSON.parse(localStorage.getItem('data')).uid;
   return this.afStorage.ref(`videos/${newName}`).putString(data);
}
storeInfoToDatabase(metaInfo, data){
  let toSave={
    created:metaInfo.timeCreated,
    url: metaInfo.downloadURLs[0],
    fullPath: metaInfo.fullPath,
    contentType: metaInfo.contentType,
    footballerId:'',
    title: data.title || '',
    type:data.type || '',
    thumbnail: data.thumbnail || '',
  }
  toSave.footballerId = JSON.parse(localStorage.getItem('data')).uid;
  return this.addVideo(toSave);
}
...