2017-10-11 8 views
0

J'essaye de télécharger l'image capturée à la base de données Firebase après l'avoir édité par un éditeur personnalisé.Comment télécharger l'image avec la distanciation FILE_URI à la base de stockage Firebase dans Ionic 2

Mon problème dans deux cas:

  • CASE1: Si je le code, je peux télécharger l'image mais je ne peux pas utiliser mon éditeur personnalisé

    takePicture(){ 
        let options: CameraOptions; 
        options = { 
        quality : 85, 
        destinationType: this.camera.DestinationType.DATA_URL, 
        sourceType : this.camera.PictureSourceType.CAMERA, 
        allowEdit : false, 
        encodingType: this.camera.EncodingType.JPEG, 
        correctOrientation: true, 
        saveToPhotoAlbum: true 
        } 
        this.camera.getPicture(options).then((imageData) => { 
        this.currentOriginalImageUri = 'data:image/jpeg;base64,' + imageData; 
        this.currentDocumentImageUri = 'data:image/jpeg;base64,' + imageData; 
        }); 
    } 
    
  • Case2: Si j'ai utilisé ce code, alors je peux utiliser la fonction de l'éditeur personnalisé mais je ne peux pas télécharger mon image

    takePicture(){ 
        let options: CameraOptions; 
        options = { 
        quality : 85, 
        destinationType: this.camera.DestinationType.FILE_URI, 
        sourceType : this.camera.PictureSourceType.CAMERA, 
        allowEdit : false, 
        encodingType: this.camera.EncodingType.JPEG, 
        correctOrientation: true, 
        saveToPhotoAlbum: true 
        } 
        this.camera.getPicture(options).then((imageData) => { 
        this.currentOriginalImageUri = imageData; 
        this.currentDocumentImageUri = imageData; 
        }); 
    } 
    

Note: Ceci est ma fonction de téléchargement

private uploadPhoto(): void { 
     let loader = this.loadingCtrl.create({ 
     content: "" 
     }) 
    loader.present().then(_=>{ 
     return this.myPhotosRef.child(this.generateUUID()).child('myPhoto.JPEG').putString(this.currentDocumentImageUri,firebase.storage.StringFormat.DATA_URL).then((savedPicture) => { 
      this.currentDocumentImageUri = savedPicture.downloadURL; 
      this.afd.list('/notesImages/').push({ 
       note_id: this.appService.id, 
       url: this.currentDocumentImageUri, 
       date: new Date().toISOString() 
      }); 
     }); 
    }).then(_=>{ 
     loader.dismiss(); 
     this.viewCtrl.dismiss(); 
    }) 
} 

Ainsi est-il possible d'utiliser les deux cas?

+0

vous utilisez file_url dans l'un et data_url dans l'autre. Avez-vous changé 'firebase.storage.StringFormat.DATA_URL' lors du test avec l'URL du fichier? –

+0

@SurajRao changer le quoi? –

Répondre

0

Vous enregistrez l'image en tant que chaîne dans la base de données. Si vous voulez télécharger un fichier chemin du fichier à l'aide en utilisant la linked api (en supposant data_url ne fonctionne pas pour votre éditeur personnalisé)

Essayez put() au lieu de putString().

return this.myPhotosRef.child(this.generateUUID()).child('myPhoto.JPEG').put(this.currentDocumentImageUri).then((savedPicture) => { 
// rest of code 
}); 
+0

Merci, j'ai vérifié cela, mais l'image fixe ne peut pas être téléchargé dans le stockage firebase –

+0

avez-vous essayé d'ajouter catch à la promesse et l'erreur de journalisation? –

+0

J'ai vérifié il n'y a pas d'erreurs .. Je pense que le problème dans le chemin local .. Je pense que je devrais le convertir pour quelque chose à télécharger l'image sur firebase .. parce que le chemin "file: /// storage/emulated. ... jpg " –