将映像上载到存储后的firebase更新数据库

问题描述 投票:1回答:1

我正在使用React-native,Redux。

npm“firebase”:“^ 4.6.0”“react-native-fetch-blob”用于blobing图像

我正在尝试上传图像,然后使用firebase将图像URL添加到数据库。

我可以将图像上传到存储或更新数据库中的数据,但我不能同时执行这些操作。

上传图片后,我调用更新数据并且没有响应(成功/失败)

这两个功能单独工作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
        })
});
}
reactjs firebase react-native upload google-cloud-firestore
1个回答
0
投票

我通过生活“BLOB”并使用base64上传我的图像来修复它。像这样:

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

console.log('上传了一个base64字符串!'); });

工作如此顺利

© www.soinside.com 2019 - 2024. All rights reserved.