Ionic 3 + Firebase Storage Получить изображение профиля

У меня есть этот код:

/////////////////////////////////////////////CROP + UPLOAD FOR FIREBASE STORAGE//////////////////////////

  // Return a promise to catch errors while loading image
  getMedia(): Promise<any> {
    // Get Image from ionic-native's built in camera plugin
    return Camera.getPicture(this.options)
      .then((fileUri) => {
        // Crop Image, on android this returns something like, '/storage/emulated/0/Android/...'
        // Only giving an android example as ionic-native camera has built in cropping ability
        if (this.platform.is('ios')) {
          return fileUri
        } else if (this.platform.is('android')) {
          // Modify fileUri format, may not always be necessary
          fileUri = 'file://' + fileUri;
          /* Using cordova-plugin-crop starts here */
        return Crop.crop(fileUri, { quality: 100 });
      }
      }).then((path) => {
         // path looks like 'file:///storage/emulated/0/Android/data/com.foo.bar/cache/1477008080626-cropped.jpg?1477008106566'
        //  console.log('Cropped Image Path!: ' + path);
        path; // return the path of file
        window.resolveLocalFileSystemURL(path, FE=>{
          FE.file(file=>{
             const FR=new FileReader()
             FR.onloadend = ((res: any)=>{
               let AF=res.target.result
               let blob=new Blob([new Uint8Array(AF)], {type: 'image/jpg'});       
               this.upload(blob)
             });
             FR.readAsArrayBuffer(file);
             })
           })
         })
       }

       upload(blob:Blob){
         const currentUserId = this.fire.auth.currentUser.uid; // get user UID in firebase
         this.Fbref.child(`Profile/${currentUserId}/img`).put(blob); //path in firebase storage


         ////GET Image URL 
         this.Fbref.child(`Profile/${currentUserId}/img` ).getDownloadURL().then(function(url){
         console.log("the URL Image is: " + url);
         url;
         let photoURL = this.url

});}

Он работает отлично, изображение вырезается, а затем загружается .... но я не могу сохранить URL-адрес изображения в DOC профиля пользователя в базе данных Firestore.

Нужно указать как photoURL: (URL изображения)

Кто-нибудь знает, как это сделать?


person Juliano JC    schedule 21.10.2017    source источник


Ответы (1)


[РЕШЕНО] Добавление приведенного ниже кода сработало отлично

savephotoURL(){
  const currentUserId = this.fire.auth.currentUser.uid;
  this.Fbref.child(`Profile/${currentUserId}/img` ).getDownloadURL().then(function(url){
  console.log("the URL Image is: " + url);
  let imageURL = url
  return imageURL
}).then((imageURL) => {
  this.database.doc(`ProfileUser/${currentUserId}/`).update({photoURL:imageURL})  })// save url in Firestore database realtime
}
person Juliano JC    schedule 26.10.2017
comment
Здравствуйте @Juliano JC, у вас есть репо по этому поводу? при загрузке и отображении изображения ionic 3 с firebase возникают некоторые проблемы. Я буду признателен за ваши отзывы. Спасибо. - person G B; 06.11.2017
comment
Привет! ... Я создал репозиторий сейчас, он находится по ссылке ниже, надеюсь, он может вам помочь ... Я также потратил время, чтобы заставить код работать.. если есть какие-либо сомнения, пришлите его в github [github.com/Julianojc/Firebase-Storage-Upload] - person Juliano JC; 06.11.2017
comment
Позвольте мне взглянуть, очень признателен. - person G B; 06.11.2017