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

时间:2017-12-22 00:04:41

标签: reactjs firebase react-native upload google-cloud-firestore

我正在使用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
        })
});
}

1 个答案:

答案 0 :(得分:0)

我通过生活" BLOB"并使用base64上传我的图像。 像这样:

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

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

工作如此顺利