Firebase按键作为Firebase存储文件名?

Firebase按键作为Firebase存储文件名?,firebase,firebase-realtime-database,firebase-storage,Firebase,Firebase Realtime Database,Firebase Storage,我注意到要使用Firebase存储(谷歌云存储),我需要想出一个唯一的文件名来上传文件 然后,我计划在Firebase实时数据库中保留该存储文件位置(https URL或gs URL)的副本,客户端将能够在其中单独读取和下载它 但是,我无法为Firebase存储上的文件提供唯一的文件名。在我的例子中,使用UUID生成器可能会导致冲突,因为多个客户端正在将图像上载到单个Firebase根目录 这是我的计划。我想知道它是否有效 让我们称我的firebase根目录为:聊天室,它由以下键组成:聊天室1、

我注意到要使用Firebase存储(谷歌云存储),我需要想出一个唯一的文件名来上传文件

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

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

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

让我们称我的firebase根目录为:聊天室,它由以下键组成:聊天室1、聊天室2……聊天室n


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

我不确定存储是否提供推送()功能,但建议如下:

请求将push()推送到firebase数据库的随机位置,并使用此键作为名称

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

在我的应用程序中,我有一个名为“photos”的节点,在那里我存储了我上传的图像的信息。我首先做一个push()来获得一个新的密钥,然后用这个密钥将上传的图像重命名为


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

如果您的UUID生成器为多个调用创建相同的UUID,我会切换到其他生成器。但是使用基于推送ID的东西也很好:它们本质上是按时间顺序排列的UUID。如果多个客户端运行相同的UUID生成器(比如说IOS平台提供的任何东西),它们不存在生成相同UUID的风险吗?您是否有一种方法可以使用UUID生成器,该生成器也可以在客户端进行自定义?按键的想法也很棘手。这将需要我首先生成Firebase数据库写入,获取生成写入的密钥,现在写入存储,现在使用URLAh更新数据库。好的,看来NSUID将生成一个全局唯一的id,这样就解决了我的问题!这是一个聪明的解决办法@wrectangle应该接受这个答案