2017-10-21 114 views
1

J'ai ce code:ionique 3 + Firebase RANGEMENT Profil image

/////////////////////////////////////////////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 

});} 

Il fonctionne parfaitement, fait la coupe d'image puis télécharger .... mais je ne suis pas en mesure d'enregistrer l'URL de l'image dans le profil utilisateur DOC dans la base de données Firestore.

Nécessité de mettre en photoURL: (URL image)

Est-ce que quelqu'un sait comment le faire?

Répondre

1

[RESOLU] Ajout du code ci-dessous travaillé parfaitement

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 
} 
+0

Bonjour @Juliano JC avez-vous une prise en pension à ce sujet? le téléchargement et l'affichage de l'image ionique 3 avec la base de feu rencontrent quelques problèmes. J'apprécierai vos commentaires. Merci. –

+0

Bonjour! ... J'ai créé un référentiel maintenant, il est dans le lien ci-dessous, j'espère qu'il peut vous aider ... J'ai également pris le temps de faire fonctionner le code .. en cas de doute, envoyez-le dans github [https://github.com/Julianojc/Firebase-Storage-Upload] –

+0

Laisse-moi jeter un oeil, très apprécié. –