我正在使用React-native,Redux。
npm“firebase”:“^ 4.6.0” 用于blobing图像的“react-native-fetch-blob”
我正在尝试上传图片,然后使用firebase将图片网址添加到数据库。
我可以将图像上传到存储或更新数据库中的数据,但我不能同时执行这两种操作。
上传图片后,我调用更新数据并且没有响应(成功/失败)
这两个功能单独使用100%,我不能一个接一个地调用它们。 我需要清楚吗?重启?如果是的话,怎么样?
上传图片:
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);
});
上传数据:
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
})
});
}
答案 0 :(得分:0)
我通过生活" BLOB"并使用base64上传我的图像。 像这样:
ref.putString(message, 'base64').then(function(snapshot) {
console.log('上传了一个base64字符串!'); });
工作如此顺利