2016-05-14 83 views
2

我正在从Blobstore切换到Google Cloud Storage,以便在项目中上传图片(因为Google调用Blobstore“superseded”)。将文件直接上传到Google Cloud Storage for GAE应用程序

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

有没有一种方法可以实现与Google云端存储(GCS)类似的工作流程?

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

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

是不是有一种方法可以简单地为GCS中的资源生成一个URL(AFAIK AWS S3支持这个)并让它从那里服务?

回答

2

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

Using the Blobstore API with Google Cloud Storage (Python)

您可以使用Blob存储区API存储在云存储的斑点它们存储在Blob存储区,而不是 。您需要按照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)

您可以使用Blob存储区API存储BLOB云存储,而不是将它们存储在Blobstore中的 。你需要建立一个水桶描述 的Google Cloud Storage文档中,并指定在BlobstoreServicecreateUploadUrl桶 和文件名,在UploadOptions参数指定 桶名称。在您的上传 处理程序中,您需要处理返回的FileInfo元数据,并且 会明确存储稍后检索 blob所需的Google Cloud Storage文件名。

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

+0

谢谢。我没有找到那个链接。 – markvgti

1

Google云端存储支持生成用于上传或读取的URL。 欲了解更多信息,请参阅:https://cloud.google.com/storage/docs/access-control/create-signed-urls-program

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

+0

我读过这篇文章,但它与现在的方式有很大的变化,并且和大多数项目一样,我非常紧张: - )...尽管我最终可能转而使用[Policy Documents](https:// cloud.google.com/storage/docs/xml-api/post-object#policydocument):它们似乎提供了很多。 – markvgti

相关问题