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

问题描述 投票:3回答:2

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

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

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

阅读和写入Google云端存储时给出的示例涉及GAE代码处理上传,读取数据并将其保存在GCS中。

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

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

java google-app-engine google-cloud-storage
2个回答
2
投票

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

使用Blobstore API和Google云端存储(Python)

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

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

更新:哎呀,上面的答案适用于Python环境,Java如下:

使用Blobstore API和Google云端存储(Java)

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

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


2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.