0

Ich verwende React-native, Redux.Firebase-Update-Datenbank nach dem Hochladen von Image in den Speicher

npm „Feuerbasis“: „^ 4.6.0“ „reagieren-native-Fetch-Blob“ für blobing Bild

Ich versuche, ein Bild hochladen und dann die Bild-URL zur Datenbank hinzufügen Feuerbasis mit .

Ich kann ein Bild in den Speicher hochladen oder Daten in der Datenbank aktualisieren, bat ich kann sie beide nicht tun.

nach Hochladen eines Bildes I-Daten zu aktualisieren, rufen Sie an und bekommen keine Antwort (Erfolg/Misserfolg)

allein Beide Funktionen arbeiten 100%, ich kann sie nicht eins nach dem anderen nennen. Muss ich klar machen? zurücksetzen? und wenn ja, wie?

Bild hochladen:

const db = firebase.firestore();... 
db.collection("reports").doc(uId).collection("user-reports") 
     .add({ 
      "title": "report title...", 
      "discription": "discription..."}) 
     .then(() => { 
      console.log("Document successfully written!"); 
      dispach({ 
       type: types.FIREBASE_REPORT_ADD, 
       payload: "Added Report" 
      }) 
     }) 
     .catch((err) => { 
      console.error("Error writing document: ", err); 
     }); 

Upload-Daten:

const imageRef = storageRef.child(`images/${uId}/${CREATION_TIME}`); 
return (dispach) => { 

fs.readFile(imagePath, 'base64') 
    .then((data) => { 
     //console.log(data); 
     return Blob.build(data, { type: `${mime};BASE64` }) 
    }) 
    .then((blob) => { 
     uploadBlob = blob; 
     return imageRef.put(blob, { contentType: mime }) 
    }) 
.then(() => { 
    uploadBlob.close() 
    return imageRef.getDownloadURL() 
}) 
.then((url) => { 
    console.log("some url:",url) 
    dispach({ 
      type: types.FIREBASE_REPORT_IMAGE_UPLOADED, 
      payload:url 
     }) 
}) 
.catch((error) => { 
    console.log("Blob err: ",error); 
    dispach({ 
      type: types.FIREBASE_REPORT_IMAGE_UPLOADED, 
      payload:null 
     }) 
}); 
} 
+1

Es sollte ein Rückruf für den Upload Abschluss zum Speicher sein. Verwenden Sie das, um die URL der Datei in die Datenbank zu schreiben. Dies ist eine ziemlich übliche Praxis. Gibt es ein Problem damit? Kannst du genauer sein? Vielleicht deinen Code zeigen? –

+0

Verwenden Sie das SDK, das Firebase enthält? –

+0

Ich benutze firebase ":"^4.6.0 "" reactive-native-fetch-blob " – amos

Antwort

0

ich es reparierte die "BLOB" mit Leben und mein Bild mit base64 hochladen. wie so:

ref.putString(message, 'base64').then(function(snapshot) { 

console.log ('eine Base64 Zeichenfolge Uploaded!'); });

funktioniert so reibungslos

Verwandte Themen