我知道以前有人问过这个问题,但实际上并没有明确的答案。我的问题是我为 GAE 构建了一个文件上传脚本,然后才发现,您最多只能将文件存储到 aprox。1MB 在数据存储中。如果您可以告诉我,如果我启用计费,1MB 限制已成为历史,我可以在这里阻止您,但我对此表示怀疑。
我需要能够每个文件最多上传 20mb,所以我想也许我可以使用亚马逊的 S3。关于如何做到这一点的任何想法?
我被告知要使用 GAE + Ec2 和 S3 的组合,但我不知道这将如何工作。
谢谢,马克斯
我知道以前有人问过这个问题,但实际上并没有明确的答案。我的问题是我为 GAE 构建了一个文件上传脚本,然后才发现,您最多只能将文件存储到 aprox。1MB 在数据存储中。如果您可以告诉我,如果我启用计费,1MB 限制已成为历史,我可以在这里阻止您,但我对此表示怀疑。
我需要能够每个文件最多上传 20mb,所以我想也许我可以使用亚马逊的 S3。关于如何做到这一点的任何想法?
我被告知要使用 GAE + Ec2 和 S3 的组合,但我不知道这将如何工作。
谢谢,马克斯
来自Amazon S3 文档:
用户打开网络浏览器并访问您的网页。
您的网页包含一个 HTTP 表单,其中包含用户将内容上传到 Amazon S3 所需的所有信息。
用户将内容直接上传到 Amazon S3。
GAE 准备和提供网页,一个快速的操作。您的用户上传到 S3,这是一个漫长的操作,但这是您用户的浏览器和亚马逊之间的操作;GAE 不参与。
S3 协议的一部分是success_action_redirect,它可以让您告诉 S3 在成功上传的情况下将浏览器指向哪里。该重定向可以到 GAE。
Google App Engine 和 EC2 是竞争对手。他们做同样的事情,尽管 GAE 为您的应用程序提供了一个在严格的语言限制下运行的环境,而 EC2 为您提供了一个虚拟机(想想 VMWare)来托管您的应用程序。
另一方面,S3 是一个原始存储 API。您可以使用 SOAP 或 REST api 来访问它。如果您想坚持使用 GAE,您可以简单地使用Amazon S3 Python 库从 Python 到 S3 进行 REST 调用。
当然,您必须为使用 S3 付费。令人惊讶的是,他们的计费是多么精细。刚开始的时候,我一个月确实被收取了 4 美分。
为了将来参考,Google 添加了对大文件上传(最大 50 MB)的支持:新功能作为Blobstore API的一部分发布,并在此处讨论。
我想,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 实用程序建立所有连接
一些 Google App Engine + S3 链接:
此链接演示小文件上传。我还没有找到大上传的例子......