【问题标题】:Firebase storage store url vs referenceFirebase 存储存储 url 与参考
【发布时间】:2020-07-28 11:07:56
【问题描述】:

例如我有带有图像的 Firestore 对象,我应该如何存储图像?

我应该将 array 的字符串 (urls) 或 arrayreference 存储到 Firebase 存储(不确定是否可能,也许作为字符串引用)?

感觉存储一个reference比较灵活,比如我们可以在图片上传之前创建reference,我们不依赖url,但我想知道这是否是正确的决定。

【问题讨论】:

  • 能否请您更详细地说明您要达到的目标
  • 我有一个在 Firebase 存储中有图像的项目,我想知道构建数据的正确方法是什么,它应该包含“下载 url”还是对存储桶的引用
  • 如果我错了请纠正我..!!您有一组图像存储在您的 Firebase 存储中,现在您希望将图像直接加载到您的回收站视图或其他类似您所说的模型的东西中。这是正确的吗?
  • 我有一个“模型”,代表一些项目,可以包含图像,用户可以添加/删除图像,所以用户上传的图像集也可以删除

标签: android firebase google-cloud-firestore firebase-storage


【解决方案1】:

通过“存储参考”,我假设您是指存储桶中图像的路径。让我们在这里快速定义所有三个部分:

  1. Cloud Storage 存储分区中的每个文件在该存储分区中都有唯一的路径。
  2. Cloud Storage 中的每个文件都可以有一个下载 URL。该 URL 允许任何知道它的人通过 HTTP读取文件(不管文件上定义的任何安全规则)。
  3. 要通过SDK读/写文件,你需要为它创建一个StorageReference,并且拥有读/写文件的权限。通过对文件的引用,您可以获得下载 URL 和该文件的路径。

您可以将 #1 和/或 #2 存储在数据库中,但不能将 #3 存储为引用仅存在于您的应用程序代码中。

最常见的是您会看到共享的下载 URL,因为这是与他人共享文件的最熟悉的方式。并且从下载 URL 中,您始终可以创建引用,从而也可以获取路径。

您也可以只存储文件的路径,然后根据需要获取下载 URL。这种情况不太常见,因为它要求所有用户都具有对存储桶的完全读取权限,如果您直接共享下载 URL,则不需要。

我偶尔会同时存储路径图片的下载 URL,以便一次性加载两者。虽然任何一个都可以很容易地映射到另一个,但存储两者都消除了对映射的需要,并使我的代码更简单。从我的表达方式来看,我希望很明显这是个人喜好。

【讨论】:

  • 如果您有与某个项目相关的图像列表,您如何存储pathurl?您是否使用一些图像中介集合 Image
  • 对于该列表中的每个图像,您将存储路径和下载 URL。在 JSON 中可能类似于 images: [ { path: "/path/to/image.jpg", downloadURL: "https://....../image.jpg?token=....." }, { path: "/path/to/image2.jpg", downloadURL: "https://....../image2.jpg?token=....." } ].
【解决方案2】:

这取决于你的实现。

  • 如果您使用 Firebase Storage API 获取图像,则存储参考。
  • 如果您想使用 Glide/Picasso,请存储 URL

注意:参考更安全。

【讨论】:

    猜你喜欢
    • 2016-10-17
    • 2021-07-20
    • 2020-12-09
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 2019-01-04
    相关资源
    最近更新 更多