6

我知道以前有人问过这个问题,但实际上并没有明确的答案。我的问题是我为 GAE 构建了一个文件上传脚本,然后才发现,您最多只能将文件存储到 aprox。1MB 在数据存储中。如果您可以告诉我,如果我启用计费,1MB 限制已成为历史,我可以在这里阻止您,但我对此表示怀疑。

我需要能够每个文件最多上传 20mb,所以我想也许我可以使用亚马逊的 S3。关于如何做到这一点的任何想法?

我被告知要使用 GAE + Ec2 和 S3 的组合,但我不知道这将如何工作。

谢谢,马克斯

4

5 回答 5

13

来自Amazon S3 文档

  1. 用户打开网络浏览器并访问您的网页。

  2. 您的网页包含一个 HTTP 表单,其中包含用户将内容上传到 Amazon S3 所需的所有信息。

  3. 用户将内容直接上传到 Amazon S3。

GAE 准备和提供网页,一个快速的操作。您的用户上传到 S3,这是一个漫长的操作,但这是您用户的浏览器和亚马逊之间的操作;GAE 不参与。

S3 协议的一部分是success_action_redirect,它可以让您告诉 S3 在成功上传的情况下将浏览器指向哪里。该重定向可以到 GAE。

于 2009-06-09T23:57:15.897 回答
3

Google App Engine 和 EC2 是竞争对手。他们做同样的事情,尽管 GAE 为您的应用程序提供了一个在严格的语言限制下运行的环境,而 EC2 为您提供了一个虚拟机(想想 VMWare)来托管您的应用程序。

另一方面,S3 是一个原始存储 API。您可以使用 SOAP 或 REST api 来访问它。如果您想坚持使用 GAE,您可以简单地使用Amazon S3 Python 库从 Python 到 S3 进行 REST 调用。

当然,您必须为使用 S3 付费。令人惊讶的是,他们的计费是多么精细。刚开始的时候,我一个月确实被收取了 4 美分。

于 2009-06-09T22:57:34.130 回答
2

为了将来参考,Google 添加了对大文件上传(最大 50 MB)的支持:新功能作为Blobstore API的一部分发布,并在此处讨论。

于 2010-01-05T06:51:35.133 回答
1

我想,Thomas L Holaday 的答案是正确的答案。无论如何,以防万一,这里有一个指向适用于 App Engine (Java) 的 Amazon Web Services SDK 的链接,您可以使用它来将文件从 App Engine 上传到 Amazon S3。(编辑:哦,刚刚注意到——S3 除外http://apetresc.wordpress.com/2010/06/22/introducing-the-gae-aws-sdk-for-java/

由阿德里安·佩特雷斯库撰写。从他的网站:

[它是] Amazon Web Services SDK for Java 的一个版本,将在 Google App Engine 内部运行。如果您只是将 AWS 提供的 JAR 直接包含到 GAE 的 WAR 中,这将不起作用,因为 GAE 的安全模型不允许 Apache Commons HTTP 客户端创建建立 HTTP 连接所需的套接字和低级网络原语;相反,Google 要求您通过其 URLFetch 实用程序建立所有连接

于 2010-08-18T18:41:14.573 回答
0

一些 Google App Engine + S3 链接:

以前的相关帖子... 10mb 限制

此链接演示小文件上传。我还没有找到大上传的例子......

此链接显示了一种不同的方法,(带有已知问题的修复

于 2009-06-09T23:23:15.810 回答