firebase - 在 Firestore 文档中引用图像的正确方法
问题描述
在我的应用程序中,我的用户文档有一个与之关联的头像图像,它保存在云存储中。目前我在用户对象中有一个引用其图像下载 URL 的字段。只是想知道这是否是正确/最佳的方法。
解决方案
没有真正的最佳方法来实现您存储在 Cloud Storage 中的头像图像与您的 Firebase 项目的特定用户之间的链接。
您可以按照自己的方式进行操作(在“用户对象中有一个引用下载 URL 的字段”)。
另一种方法是将头像图像存储在默认存储桶下的公共“文件夹”中,使用用户 UID 来命名头像图像(请参阅底部的“文件夹”注释)。
然后您可以使用具有以下结构的链接直接下载图像(或将其包含在img src
HTML 标记中)
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 控制台将显示按文件夹组织的文件。
推荐阅读
- r - 在 R 中应用自动化将数字行更改为日期
- javascript - 如何为 replaceWith() 设置事件监听器?
- python - 使用 lambda 在列表中查找最小值
- javascript - 将 javascript 循环导出到 CSV
- css - 尝试使用 CSS 隐藏 div
- java - spring,prototype和singleton有性能上的区别吗?
- r - R 包 'ps' 安装失败,因为在安装的最后一步拒绝了 mv 的权限
- twilio-functions - 如何在 Twilio Functions 中安全地存储电话号码?
- react-native - 类型错误:Method.bind 不是函数
- python - 您如何列出具有相同外键对象的所有对象?