我正在考虑从Blobstore切换到Google云端存储,以处理项目中的图片上传(因为Google称Blobstore为“被取代”)。
在Blobstore中,多部分表单将直接提交(上传)到Blobstore,然后Blobstore会重写请求并重定向到GAE应用程序以处理BlobKey
(s)。这意味着GAE应用程序的负载非常小。
有没有办法在Google云端存储(GCS)中实施类似的工作流程?
Reading and Writing to Google Cloud Storage给出的示例涉及GAE代码处理上传,读取数据并将其保存在GCS中。
类似于提供(例如)上传的图像文件:似乎必须在一个GAE代码中实现处理程序以从GCS读取并返回图像数据。
有没有办法简单地为GCS中的资源生成一个URL(AFAIK AWS S3支持这个)并让它从那里提供服务?
答案 0 :(得分:2)
您可以继续使用blobstore API但使用GCS中的实际存储空间,这意味着相同的上传行为以及可能对您的应用程序进行的最小更改。
来自Using the Blobstore API with Google Cloud Storage (Python):
您可以使用Blobstore API将Blob存储在云存储中 将它们存储在Blobstore中。您需要按照描述设置存储桶 在Google Cloud Storage文档中并指定存储桶 和blobstore.blobstore.create_upload_url中的文件名 gs_bucket_name 参数。在上传处理程序中,您需要处理返回的FileInfo元数据并明确存储 稍后需要Google Cloud Storage文件名来检索blob。
此处还提供了一个完整的示例应用程序。
更新:糟糕,上面的答案适用于Python环境,Java遵循:
来自Using the Blobstore API with Google Cloud Storage (Java):
您可以使用Blobstore API将Blob存储在云存储中 将它们存储在Blobstore中。您需要按照描述设置存储桶 在Google Cloud Storage文档中并指定存储桶 和 BlobstoreService createUploadUrl中的文件名,指定 UploadOptions参数中的存储桶名称。在您的上传中 处理程序,您需要处理返回的FileInfo元数据和 明确存储检索所需的Google云端存储文件名 后来的blob。
Java没有完整的示例应用程序。
答案 1 :(得分:2)
Google云端存储支持生成上传或读取的网址。 有关详细信息,请参阅:https://cloud.google.com/storage/docs/access-control/create-signed-urls-program
gcloud-java-storage库可以帮助创建这样的signed URL。