Firebase 存储存储 URL 与参考

Pav*_*ley 2 android firebase firebase-storage google-cloud-firestore

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

我应该存储arraystring( urls)array还是reference Storage(不确定是否可能,也许引用为字符串)?

感觉存储 areference更灵活,例如我们可以reference在上传图像之前创建,并且我们不依赖于url,但我想知道这是否是正确的决定。

Fra*_*len 7

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

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

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

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

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

我偶尔会存储图像的路径下载 URL,以便一次性加载两者。虽然其中任何一个都可以轻松映射到另一个,但存储两者都消除了对该映射的需要,并使我的代码更简单。从我的措辞来看,我希望可以清楚地看出这是个人偏好。

  • 对于该列表中的每个图像,您将存储路径和下载 URL。在 JSON 中,可能类似于 `images: [ { path: "/path/to/image.jpg", downloadURL: "https://....../image.jpg?token=..... " }, { path: "/path/to/image2.jpg", downloadURL: "https://....../image2.jpg?token=....." } ]`. (2认同)