【问题标题】:Get a permanent URL from Google Cloud Storage?从 Google Cloud Storage 获取永久网址?
【发布时间】:2019-12-24 14:21:45
【问题描述】:

我有一个场景,用户可以将图像上传到 Firebase 存储,但我不希望他们能够获取这些图像的 URL(复制图像地址)。相反,我想为他们提供一个 blob。

当用户上传图片客户端时,我会获取下载 URL 并将其存储在 Firestore 中。当用户想要查看图像时,我有一个云功能可以下载该图像,并将其作为 blob 发送给用户。

这对于用户上传的图片非常有用,但是我还有一个云功能,当图片上传并生成缩略图时会自动触发。

如何从云功能/节点服务器获取此生成图像的永久下载 URL?我可以得到一个签名的,但这不是我需要的

【问题讨论】:

  • 签名 URL 有什么问题?您究竟需要此 URL 来做什么,而签名 URL 未涵盖这些功能?

标签: firebase google-cloud-storage firebase-storage


【解决方案1】:

您不能直接使用 Google Cloud Storage。 signed URL 不能活超过 7 天

最长有效期值为 604800 秒(7 天)。

您可以保留生成的缩略图的链接,但您必须每次都下载并提供它,或者每次都生成一个签名的 url 以供使用和显示它。第二种解决方案减少了处理时间,从而降低了成本。

【讨论】:

    【解决方案2】:

    如果您想要一个永久 URL 来访问您的数据,您可以根据本文档 [1] 将其公开。

    请注意,通过 Google Cloud Platform Console 访问公共数据时,您必须通过 Google 进行身份验证。可以使用任何 Google 帐户访问,该帐户不必与包含公共数据的项目关联,也不必在 Cloud Storage 服务中注册 [2]。

    [1]https://cloud.google.com/storage/docs/access-control/making-data-public

    [2]https://cloud.google.com/storage/docs/access-public-data

    【讨论】:

      【解决方案3】:

      如果您使用的是 Django 和 django-storages[google] lib

      1. 将存储桶公开(不建议用于生产)
      2. 禁用 ACL 和 URL 签名

      将这些添加到 settings.py

      GS_DEFAULT_ACL = None
      GS_QUERYSTRING_AUTH = False
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-22
        • 2015-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-01
        相关资源
        最近更新 更多