【问题标题】:google cloud storage: access cloud storage and provide download link for users谷歌云存储:访问云存储并为用户提供下载链接
【发布时间】:2020-02-18 18:52:50
【问题描述】:

在我的开发服务器中,我可以使用 blobkey 下载 csv 对象。问题是在生产中,blobkey 不下载任何东西(它返回 404);大概是因为 blobkey 不准确。我认为这是因为 google 弃用了 blobstore 并且不再使用 blobkeys。这意味着我需要尝试从谷歌存储桶下载。我不知道该怎么做;在开发服务器中,我会去这个端点下载 /data?key=<blob_key> 来下载 blob 对象。

如果我导航到存储桶和项目然后单击下载,我也可以下载 csv 对象。我可以做一些小的调整来让下载发生吗?如果有人能指出我特定的方向,BI 将不胜感激。

【问题讨论】:

  • 您的用户是否使用 Google 凭据向 Google 进行身份验证?如果是这样,ACL 和/或 IAM 听起来像是答案。如果您需要根据请求提供下载 URL,则可能是签名 URL ...cloud.google.com/storage/docs/access-control/signed-urls
  • 嘿 Kolban,你有一些可以链接的示例 python 代码吗?我在使用 google 文档时遇到了问题。
  • 这是一个很大的区域......但这里有一些关于从应用程序创建签名 URL 的文档,示例是 python。 cloud.google.com/storage/docs/access-control/…

标签: google-app-engine google-cloud-platform google-cloud-storage


【解决方案1】:

要根据您的偏好从 Cloud Storage 中的存储桶下载对象,您可以查看以下代码示例 (Python):

from google.cloud import storage


def download_blob(bucket_name, source_blob_name, destination_file_name):
    """Downloads a blob from the bucket."""
    # bucket_name = "your-bucket-name"
    # source_blob_name = "storage-object-name"
    # destination_file_name = "local/path/to/file"

    storage_client = storage.Client()

    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(source_blob_name)
    blob.download_to_filename(destination_file_name)

    print(
        "Blob {} downloaded to {}.".format(
            source_blob_name, destination_file_name
        )
    )

请确保您不再使用 Python 2.7,因为它已被弃用且不再受支持。如果您有 Python 2.7,请升级到 Python 3.7。

【讨论】:

  • 很遗憾我正在使用python2.7;我无法控制我们何时离开它。拥有 python 2.7 会是一个问题。我也很好奇我需要将destination_file_name 设置为什么。
  • 它在评论中解释,因为我想您希望用户在他们的 PC 上下载它。 # destination_file_name = "local/path/to/file"
猜你喜欢
  • 1970-01-01
  • 2021-08-21
  • 2019-08-24
  • 2023-03-11
  • 2013-08-24
  • 2017-11-23
  • 1970-01-01
  • 2023-03-26
  • 2016-10-12
相关资源
最近更新 更多