当前位置: 首页 > 知识库问答 >
问题:

为GAE应用程序直接将文件上载到Google云存储

刘明朗
2023-03-14

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

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

有没有办法通过谷歌云存储(GCS)实现类似的工作流?

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

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

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

共有2个答案

方玄天
2023-03-14

谷歌云存储确实支持为上传或读取生成URL。有关更多信息,请参阅:https://cloud.google.com/storage/docs/access-control/create-signed-urls-program

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

堵睿范
2023-03-14

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

将Blobstore API与Google云存储(Python)结合使用:

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

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

更新:Oops,上述答案适用于Python环境,Java环境如下:

将Blobstore API与Google云存储(Java)结合使用:

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

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

 类似资料:
  • 我正在尝试建立一个基于python的基本谷歌应用引擎站点,允许用户将文件上传到谷歌云存储(主要是图像) 我已经阅读了JSON API和GCS客户端库概述(以及blobstore等)的文档,但仍然没有很好地了解哪种方法是最好的以及它们之间的关系。如果有人能概述一下,或者给我指出一些我可以查看的资源,那就太好了 此外,任何相关的示例代码都会非常有用。我已经能够在此处运行上载示例,但不确定它们是否对应用

  • 我注意到,现在当我单击应用程序链接时,浏览器会打开一个窗口,其中包含以下选择选项:浏览器、Google Play... 该链接是从浏览器而不是应用程序中使用的,因此 market:// 不相关。 我使用标准格式: 这是最近的变化吗?我认为以前链接是直接在Google Play中打开的,没有中间窗口? 今天有没有可能不用这个选择窗口直接在Google Play中打开应用??

  • 我有一个要求,我需要上传文件到谷歌云存储(他拥有并完全维护它)桶。 这个谷歌云存储桶是由我的客户创建的。 我是谷歌云的新手,有亚马逊S3的经验。我在服务器上运行SSI,以将事务数据加载到平面文件。 我为谷歌云创建了一个示例帐户,并安装了谷歌SDK。我可以通过gsutil手动上传文件。 我的问题是 > 我应该如何建议我的客户共享凭据? 我如何连接到谷歌云存储与提供凭据独立? 如何通过以上两个步骤将文

  • 我的情况是,当我以JSON字符串的形式从其他来源接收数据时,我希望将此字符串上载到Google云存储,而不将此字符串写入本地文件并上载此文件。有没有办法做到这一点。非常感谢。如下代码所示 因此,我预计Google云存储将有一个文件test.json,其中包含来自jsonString的内容

  • 我使用将文件从客户端上传到Google Cloud Bucket,文件正在成功上传,但我希望上传的文件可以公开访问(希望文件具有公共-读取权限),如何在上传的文件上设置ACL,从而使其公开访问。这是我用过的密码

  • 我使用以下链接使用谷歌云存储: 谷歌云 我想上传一个对象,使用上面的API中给出的插入函数。我使用的代码如下: 但我得到的错误如下: 致命错误:未捕获的异常“Google_ServiceException”,消息为“调用POST时出错”https://www.googleapis.com/storage/v1beta1/b/mybucket/o: (400)第66行的/home/www/publi