首页 > 解决方案 > 在 Firestore 文档中引用图像的正确方法

问题描述

在我的应用程序中,我的用户文档有一个与之关联的头像图像,它保存在云存储中。目前我在用户对象中有一个引用其图像下载 URL 的字段。只是想知道这是否是正确/最佳的方法。

标签: firebasegoogle-cloud-firestorefirebase-storage

解决方案


没有真正的最佳方法来实现您存储在 Cloud Storage 中的头像图像与您的 Firebase 项目的特定用户之间的链接。

您可以按照自己的方式进行操作(在“用户对象中有一个引用下载 URL 的字段”)。


另一种方法是将头像图像存储在默认存储桶下的公共“文件夹”中,使用用户 UID 来命名头像图像(请参阅底部的“文件夹”注释)。

然后您可以使用具有以下结构的链接直接下载图像(或将其包含在img srcHTML 标记中)

https://firebasestorage.googleapis.com/v0/b/<yourprojectname>.appspot.com/o/users%2F38r174prM9aTx4JAdcm50r3V0Hq2.png?alt=media

users专用于公共头像图像的“文件夹”的名称在哪里

并且38r174prM9aTx4JAdcm50r3V0Hq2.png是特定用户的图像文件名(即用户 UId +png扩展名)。

请注意,它/被编码为%2F(标准 URL 编码)。

然后,您将设置 Cloud Storage 安全规则,如下所示:

service firebase.storage {
 match /b/{bucket}/o {

    match /privateFiles {   //All other files that are not under users
     match /{allprivateFiles=**} {
       allow read: if false;
       allow write: .....
     }
   }

   match /users/{userId} {   //Public "folder"
     allow read;
   }
 }
}

注意:实际上 Google Cloud Storage 没有真正的“文件夹”,但通过在文件路径中使用“/”分隔符,它的行为类似于文件夹。特别是 Firebase 控制台将显示按文件夹组织的文件。


推荐阅读