android - Firebase 存储存储 url 与引用

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

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

我应该将 array of string(urls) 还是 array of reference 存储到 Firebase Storage(不确定如果可能的话,也许引用为字符串)?

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

最佳答案

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

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

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

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

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

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

关于android - Firebase 存储存储 url 与引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63132719/

相关文章:

java - 使用 HttpUrlConnection 获取 java.io.EOFException

安卓 Youtube API : how to play video when YoutubeView is invisible

android - OpenGL ES 着色器中的 Alpha 渐变不平滑

java - 向 GCM 服务器发送消息(使用 Java)时出现异常 [errorCode=MismatchSenderId]

swift - CGPoint 数组作为不同的结构

android - getContactsFromFirebase() 方法返回一个空列表

android - Cordova 的 device.uuid 值可以用于发送 Firebase 推送通知吗?

ios - Firestore : using Document ID vs Id as a field

flutter - Stream Provider 使用自定义模型类监听 firestore 实时变化

angular - 火力基地/火力商店 : create and store unique id for documents (users for USERID)