我注意到,要使用Firebase Storage (Google Cloud Storage),我需要提出一个唯一的文件名来上传文件。
然后我计划在Firebase Realtime数据库中保留该存储文件位置(https URL或gs URL)的副本,客户端将能够分别读取和下载它
但是,我无法为位于Firebase Storage上的文件提供唯一的文件名。在我的情况下,使用UUID生成器可能会导致冲突,因为几个客户端正在将图像上传到单个Firebase根目录
这是我的计划。我想知道它是否有效让我们调用我的firebase root: Chatrooms,它由键:chatroom_1, chatroom_2…chatroom_n
在chatroom_k下,我有一个名为"Content"的根,它存储由Firebase唯一生成的用于存储内容的Push键。每个推送键表示一个内容,但实际内容存储在Firebase Storage中,一个名为URL的键引用实际内容的URL。Firebase存储上此内容的文件名是否具有相同的随机Push键,只要桶层次结构表示chatroom_k?
我不确定存储是否提供push()函数,但建议如下:
请求push()到firebase数据库的随机位置,并使用此键作为名称。
在任何情况下,您可能也需要将此名称存储到数据库中。
在我的应用程序中,我有一个名为"photos"的节点,我在那里存储有关我上传的图像的信息。我首先执行push()以获得一个新密钥,然后使用此密钥将上传的图像重命名为。
这是你需要的还是我误解了什么?
所以我有同样的问题,我达成了这个解决方案:
我用时间和日期以及用户uid来命名这些文件,所以几乎不可能有两个文件名相同的文件,而且它们每次都会不同。
DateFormat dtForm = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss.");
String date = dtForm.format(Calendar.getInstance().getTime());
String fileName = date + FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseStorage
.getInstance()
.getReference("Folder/SubFolder/" + fileName)
.putFile(yourData)
这样,文件的名称将像这样"2022.09.12.11.50.59.WEFfwds2234SA11"例如