【问题标题】:Firebase Push keys as Firebase Storage file names?Firebase 按键作为 Firebase 存储文件名?
【发布时间】:2016-11-05 03:21:43
【问题描述】:

我注意到要使用 Firebase Storage (Google Cloud Storage),我需要提供一个唯一的文件名来上传文件。

然后我计划在 Firebase 实时数据库中保留该存储文件位置(https URL 或 gs URL)的副本,客户端将能够在其中单独读取和下载它

但是,我无法为 Firebase 存储上的文件提供唯一的文件名。在我的情况下,使用 UUID 生成器可能会导致冲突,因为多个客户端正在将图像上传到单个 Firebase 根目录

这是我的计划。我想知道它是否有效

让我们调用我的 firebase 根:聊天室,它由键组成:chatroom_1、chatroom_2 ...chatroom_n

在 chatroom_k 下我有一个名为“Content”的根,它存储由 Firebase 唯一生成的用于存储内容的推送键。每个推送键代表一个内容,但实际内容存储在 Firebase 存储中,名为 URL 的键引用实际内容的 URL。只要存储桶层次结构代表 chatroom_k,Firebase 存储上此内容的文件名是否可以具有相同的随机推送键?

【问题讨论】:

  • 如果您的 UUID 生成器为多个调用创建相同的 UUID,我会切换到不同的生成器。但是使用基于推送 ID 的东西也很好:它们本质上是恰好按时间顺序排列的 UUID。
  • 如果多个客户端运行相同的 UUID 生成器(比如 IOS 平台提供的任何内容),它们不会冒生成相同 UUID 的风险吗?你有办法使用也可以在客户端定制的 UUID 生成器吗?按键的想法也很棘手。它需要我首先生成一个 Firebase 数据库写入,获取生成写入的密钥,现在写入存储,然后使用 URL 更新数据库
  • 嗯,看来 NSUUID 会生成一个全球唯一的 id,这样就解决了我的问题!

标签: firebase firebase-realtime-database firebase-storage


【解决方案1】:

我不确定 storage 是否提供 push() 功能,但建议如下:

请求一个 push() 到您的 firebase 数据库的随机位置,并使用此键作为名称。

在任何情况下,您都可能需要将此名称存储到数据库中。

在我的应用程序中,我有一个名为“照片”的节点,在那里我存储了有关我上传的图像的信息。我首先执行 push() 以获取新密钥,然后使用此密钥将上传的图像重命名为。

这是你需要的还是我误解了什么?

【讨论】:

  • 这是一个聪明的解决方案。 @wrectangle 应该接受这个作为答案
猜你喜欢
  • 2020-03-26
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 2021-05-14
  • 2019-06-24
  • 1970-01-01
  • 2016-12-01
相关资源
最近更新 更多