【问题标题】:What is the purpose behind getDownloadURL of Firebase StorageFirebase Storage的getDownloadURL背后的目的是什么
【发布时间】:2019-04-02 22:57:57
【问题描述】:

根据这些docs,我知道一旦我们在存储中拥有firebase 路径,我们可以通过在此路径的ref 上调用getDownloadUrl() 来获取下载网址。我的问题是所有文档都建议先获取下载 url,然后根据这些图像下载文件数据,但是我们可以将此下载 url 保存在文件的实时数据库中,因此我们不必每次都调用getDownloadUrl() ?

当前文件上传和下载工作流程 ->

上传:

 1. upload file to storage in specific path.
 2. store path in realtime DB to persist for future downloading purposes

下载

 1. get object from realtime DB and retrieve storage path
 2. get storage object
 3. get url from getDownloadUrl() on that object
 4. download data from url

更好的上传/下载工作流程 ->

上传:

 1. upload file to storage in specific path.
 2. get download url from storage object 
 3. store download path in realtime DB to persist for future downloading purposes

下载

 1. get object from realtime DB 
 2. get download url stored in object
 3. download data from download url

getDownloadUrl() 在幕后做什么?给定的 url 是静态的吗?

【问题讨论】:

  • 我认为问题在于实际的下载 URL 可能会动态变化。所以不,你不应该坚持下去。根据文档,每次只需致电getDownloadUrl()
  • 这是有道理的。这主要是因为 firebase 确定离客户端最近的 CDN 并从那里提供服务吗?

标签: firebase firebase-storage


【解决方案1】:

下载 URL 应保留。客户每次都调用它是浪费时间。这在 Firebase 示例代码中得到了一致的说明。

【讨论】:

  • 该问题还询问幕后发生了什么以及 URL 是否是静态的,这正是我想知道的,但在文档中无法完全找到。下载 URL 的一个好处似乎是它可以被撤销。但是,虽然我有一些预感,但我认为您需要下载 URL 的原因并不明显。您能解释一下为什么客户不能直接从 Google Cloud Storage 请求路径吗?似乎一旦您有了下载 URL,权限就会“走出门外”,并且该 URL 实际上是公开的,因此任何具有该 URL 的用户都可以看到文件。对吗?
  • 按照类似的思路,是否应该始终坚持价值?如果 URL 允许任何人读取文件,那么如果您在数据库中有一个文档,该文档在存储中有相关图像,但该文档与 2 个不同角色的用户共享,那该怎么办。 1 个角色被允许看到图像,而另一个角色只被允许看到元数据。在这种情况下,如果您想要一个文档以提高效率和成本,您是否只想保留数据库中的路径,以便在每个用户调用 getDownloadURL 时在每个用户的存储级别确定查看图像的权限?
猜你喜欢
  • 1970-01-01
  • 2017-02-25
  • 2020-11-03
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
  • 2019-02-07
  • 2018-09-25
相关资源
最近更新 更多