firebase-storage - 生成下载网址的最佳方式
问题描述
我正在使用 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 有任何其他建议吗?谢谢。
解决方案
有没有一种有效的方法来获取每个文件的下载 URL,而无需自己在前端循环遍历整个内容?
没有什么比你现在做的更有效率了。获取下载 URL 需要像现在一样使用 getDownloadURL,如果您希望它们拥有可以撤销的令牌。该下载 URL 的主要特征是它们具有不可猜测的令牌(因此它们对拥有该 URL 的人保持私有),并且该令牌可以在以后随时撤销。从客户端生成此 URL 的唯一方法是使用 getDownloadURL。
另外,可以从https://storage.cloud.google.com/firebaseappspot/path/flashcard1.mp3下载吗?
这完全取决于您和您的安全要求。如果您希望对象是公开的和可访问的,那就这样吧。
推荐阅读
- html - 工具提示中的换行符不适用于 Google chrome,但适用于 Firefox
- reactjs - React 测试库、firebase、模拟函数
- python - FastAPI - 带有 Pydantic List 字段的 GET 请求
- javascript - 如何使用 chart.js 绘制二维线时间图
- javascript - TypeORM,manyToMany 我无法保存数组对象及其与一个请求的关系
- drools - Drools 规则模板错误 [错误:未关闭的 @if{} 块。使用占位符时的预期 @end{}]
- javascript - 角度,基本路线的保护不起作用
- reactjs - 如何检查dom节点迭代中的孩子是否具有特定的类名
- php - **警告**:在 PHP 中使用未定义的常量 HTTP_HOST]
- integromat - 如何在自定义 Integromat 应用程序中解析此日期:2017-11-28T23:00:00Z?