首页 > 解决方案 > 生成下载网址的最佳方式

问题描述

我正在使用 react-native 创建一个间隔重复的抽认卡应用程序。每个抽认卡都包含一个音频文件,我将其存储在 Firebase 存储中。我在 Firebase 存储中存储了大约 10000 个音频文件,但它们都有相似的命名结构(即 flashcard1.mp3、flashcard2.mp3、...)。每次用户登录应用程序时,他们将有大约 50 张卡片要查看和 20 张新卡片要查看。目前,我正在 for 循环中收集 70 个抽认卡中每一个的下载 URL,代码如下:

const audiourl = await storage()
            .ref('path/flashcard'+cardIndex+'.mp3')
            .getDownloadURL();
          console.log(audiourl);

必须为每个下载 URL 向 Google 服务器发送请求并不是最佳选择。一种选择似乎是将每个下载 URL 存储在 firebase 数据库中,并在应用加载时调用它。有没有一种有效的方法来获取每个文件的下载 URL,而无需自己在前端循环遍历整个内容?

另外,可以从https://storage.cloud.google.com/firebaseappspot/path/flashcard1.mp3下载吗?音频数据不包含私人信息。您对如何存储/获取音频 URL 有任何其他建议吗?谢谢。

标签: firebase-storage

解决方案


有没有一种有效的方法来获取每个文件的下载 URL,而无需自己在前端循环遍历整个内容?

没有什么比你现在做的更有效率了。获取下载 URL 需要像现在一样使用 getDownloadURL,如果您希望它们拥有可以撤销的令牌。该下载 URL 的主要特征是它们具有不可猜测的令牌(因此它们对拥有该 URL 的人保持私有),并且该令牌可以在以后随时撤销。从客户端生成此 URL 的唯一方法是使用 getDownloadURL。

另外,可以从https://storage.cloud.google.com/firebaseappspot/path/flashcard1.mp3下载吗?

这完全取决于您和您的安全要求。如果您希望对象是公开的和可访问的,那就这样吧。


推荐阅读