【问题标题】:Uploading files directly to Google Cloud Storage for GAE app将文件直接上传到 Google Cloud Storage for GAE 应用
【发布时间】:2016-05-14 09:29:50
【问题描述】:

我正在考虑从 Blobstore 切换到 Google Cloud Storage,以便在项目中上传图片(因为 Google 将 Blobstore 称为“已取代”)。

在 Blobstore 中,多部分表单将直接提交(上传)到 Blobstore,然后 Blobstore 将重写请求并重定向到 GAE 应用程序以处理BlobKey(s)。这意味着 GAE 应用程序的负载非常小。

有没有办法使用 Google Cloud Storage (GCS) 实现类似的工作流程?

Reading and Writing to Google Cloud Storage 给出的示例涉及 GAE 代码处理上传、读取数据并将其保存在 GCS 中。

类似地为(例如)上传的图像文件提供服务:似乎必须在 GAE 代码中实现一个处理程序才能从 GCS 读取并返回图像数据。

有没有办法简单地为 GCS 中的资源生成 URL(AFAIK AWS S3 支持这一点)并从那里提供服务?

【问题讨论】:

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


    【解决方案1】:

    您可以继续使用 blobstore API,但实际存储在 GCS 中,这意味着相同的上传行为并且可能对您的应用程序进行最小的更改。

    来自Using the Blobstore API with Google Cloud Storage (Python)

    您可以改用 Blobstore API 将 Blob 存储在 Cloud Storage 中 将它们存储在 Blobstore 中。您需要按照说明设置存储桶 在Google Cloud Storage 文档中并指定存储桶 和blobstore.blobstore.create_upload_url 中的文件名 gs_bucket_name 参数。在您的上传处理程序中,您需要处理返回的 FileInfo 元数据并显式存储 稍后检索 blob 所需的 Google Cloud Storage 文件名。

    那里还提供了一个完整的示例应用程序。

    更新:糟糕,以上答案适用于 Python 环境,Java 环境如下:

    来自Using the Blobstore API with Google Cloud Storage (Java)

    您可以改用 Blobstore API 将 Blob 存储在 Cloud Storage 中 将它们存储在 Blobstore 中。您需要按照说明设置存储桶 在Google Cloud Storage 文档中并指定存储桶 和 BlobstoreService createUploadUrl 中的文件名,指定 UploadOptions 参数中的存储桶名称。在您的上传中 处理程序,您需要处理返回的FileInfo 元数据和 显式存储检索所需的 Google Cloud Storage 文件名 稍后的 blob。

    虽然没有完整的 Java 示例应用程序。

    【讨论】:

    • 谢谢。我没有找到那个链接。
    【解决方案2】:

    Google Cloud Storage 确实支持为上传或读取生成 URL。 更多信息请见:https://cloud.google.com/storage/docs/access-control/create-signed-urls-program

    gcloud-java-storage 库可以帮助创建这样的signed URL

    【讨论】:

    • 我读到了,但与现在的情况相比,这是一个重大变化,和大多数项目一样,我真的很赶时间:-)...尽管我最终可能会转向使用 @987654323 @:他们似乎提供了很多。
    猜你喜欢
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 2021-12-30
    • 2018-10-31
    相关资源
    最近更新 更多