首页 文章

将文件直接上传到Google Cloud Storage for GAE app

提问于
浏览
3

我正在考虑从Blobstore切换到Google Cloud 端存储,用于项目中的图像上传(因为Google称Blobstore为“被取代”) .

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

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

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

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

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

2 回答

  • 2

    您可以继续使用blobstore API但使用GCS中的实际存储,这意味着相同的上载行为以及可能对您的应用进行的最小更改 .

    Using the Blobstore API with Google Cloud Storage (Python)

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

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

    Update: 糟糕,上面的答案适用于Python环境,Java如下:

    Using the Blobstore API with Google Cloud Storage (Java)

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

    没有针对Java的完整示例应用程序 .

  • 2

    Google Cloud 端存储确实支持生成用于上传或读取的网址 . 有关更多信息,请参阅:https://cloud.google.com/storage/docs/access-control/create-signed-urls-program

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

相关问题