Firebase 存储子引用 getDownloadURL 返回“childPath.split 不是函数”

Posted

技术标签:

【中文标题】Firebase 存储子引用 getDownloadURL 返回“childPath.split 不是函数”【英文标题】:Firebase Storage child ref getDownloadURL returning "childPath.split is not a function" 【发布时间】:2021-12-18 03:23:15 【问题描述】:

由于 .child(blob) 而发生错误,我已经尝试过:

.child()
.child(blob)
.child(blob.name)

“blob”在代码的前面部分定义,它应该仍然可以在存储中引用它。

        async function handleSubmitUpload() 
        if (recordedChunks.length) 
            const blob = new Blob(recordedChunks, 
                type: "video/webm",
            );
            await storage().ref(`prodReviews/$blob`).put(blob);
            console.log( "success storing" + (blob));
            await storage()
                .ref('prodReviews')
                .child(blob)
                .getDownloadURL()
                .then((videoUrl) => 
                    firestore.doc(`products/$productID`)
                    .set(videoUrl,  merge: true );
                    console.log("Review for item uploaded successfully")

                        setRecordedChunks([]);
                    )

                

【问题讨论】:

blob 到底是什么? child() 方法需要一个字符串。您是否尝试获取已上传对象的下载 URL? 是的,blob 在之前的代码中已上传到 Storage。只是现在我想要downloadURL,这样视频就可以存储在Firebase上并显示在项目中 你能分享你用来上传文件的代码吗?您必须在child() 中使用相同的路径才能获取该对象的信息。或者您可以从快照本身获取参考 我刚刚编辑了帖子以包含完整的代码。我没有“快照”的代码,我认为不需要 【参考方案1】:

child() 方法将对象的路径作为参数而不是 blob。尝试重构代码如下所示:

// Create a storage reference
const reviewRef = storage().ref(`prodReviews/$blob`);

// Upload the object to that ref
await reviewRef.put(blob);

// Get download URL
const videoUrl = await reviewRef.getDownloadURL();

// Add Firestore document
await firestore.doc(`products/$productID`).set(videoUrl,  merge: true );

【讨论】:

感谢您在美国西海岸创业。很高兴你进入 YC? 将 videoRef 更改为 reviewRef

以上是关于Firebase 存储子引用 getDownloadURL 返回“childPath.split 不是函数”的主要内容,如果未能解决你的问题,请参考以下文章

在具有子密钥uid(javascript)的firebase上检索数据

使用 Firebase Image Resize Extension 时避免重新生成令牌

Firebase 存储上传错误:无法读取未定义的属性“子”

FIREBASE 数据库 - 将唯一密钥存储到子节点(Swift/IOS)

Imagepicker'XFile'不是类型转换和Firebase存储图像上传错误中'File'类型的子类型

使用子参考值将数据推送到 Firebase