2017-09-23 2 views
2

J'essaye de télécharger l'image dans Firebase. J'utilise 'reac-native-image-picker' mais chaque fois que je reçois une erreur. Stockage Firebase: La chaîne ne correspond pas au format 'base64': Caractère invalide trouvé. J'ai vu beaucoup de messages liés à ce problème mais aucun ne fonctionne.La chaîne ne correspond pas au format 'base64': Caractère invalide trouvé et ne peut actuellement que créer un blob à partir d'autres blobs réagir natif

uploadImage = response = > 
{ 
    let metadata = { 
     contentType: response.type 
    } 
    let randomId = shortid.generate() 
    let fileExtension 
    if (Platform.OS == "android") fileExtension = response.type.split("/")[1] 
    else 
    { 
     fileExtension = response.fileName.split(".")[1] 
    } 
    let storagePath = 
     "/Base_Url/" + 
     this.props.username + 
     "/" + 
     this.props.sessionId + 
     "/" + 
     randomId + 
     "." + 
     fileExtension 
    let storingRef = firebase.storage() 
     .ref(storagePath); 
    storingRef.putString(response.data, "base64url", metadata) 
     .on(
      firebase.storage.TaskEvent.STATE_CHANGED, 
      snapshot = > 
      { 
       var progress = 
        snapshot.bytesTransferred/snapshot.totalBytes * 100; 
       if (progress === 100) 
       { 
        let downloadURL = FireBaseUtils.getDownloadURL(storagePath); 
        this.setState(
        { 
         url: snapshot.downloadURL 
        }); 
       } 
       else 
       { 
        switch (snapshot.state) 
        { 
        case firebase.storage.TaskState.PAUSED: 
         break; 
        case firebase.storage.TaskState.RUNNING: 
         break; 
        } 
       } 
      }, 
      error = > 
      { 
       switch (error.code) 
       { 
       case "storage/unauthorized": 
        break; 
       case "storage/canceled": 
        break; 
       case "storage/unknown": 
        break; 
       } 
      } 
    ); 
}; 

Répondre

0

Essayez d'utiliser putString(message, 'base64') (non base64url)

Si un Blob, un fichier ou Uint8Array ne sont pas disponibles, vous pouvez utiliser la méthode PutString() pour télécharger une première, base64, base64url ou data_url chaîne codée dans Cloud Storage.

https://firebase.google.com/docs/storage/web/upload-files

Hope it helps

+1

i essayé PutString (message, 'base64'), mais il travaille aussi pas –

+0

Pouvez-vous essayer d'ajouter 'substring (23)', s'il vous plaît? Quelque chose comme 'toringRef.putString (response.data.substring (23)," base64 ")' laissez-moi savoir si cela aide – soutot

+0

oui j'ai déjà essayé .... celui-là –