Nic*_*oul 8 upload google-app-engine file-upload
我正在创建一个Google App Engine网络应用程序来"转换"10K~50M的文件
场景:
(现在我没有实现第4步,servlet将文件发回而不进行转换.)
问题:它适用于15MB文件但不适用于40MB文件,说:"错误:请求实体太大.您的客户发出的请求太大了."
对此有任何解决方法吗?
源代码:https://github.com/nicolas-raoul/transdeck
原理:http://code.google.com/p/ankidroid/issues/detail ? id = 697
对于HTTP请求和HTTP响应,GAE的硬限制为32MB.这将直接限制上传/下载GAE应用程序的大小.
修订后的答案(使用Blobstore API.)
Google向Blobstore API提供了处理GAE中较大文件(最高2GB)的功能.概述文档提供了完整的示例代码.您的Web表单会将文件上传到blobstore.然后blobstore API将POST重写回您的servlet,您可以在其中进行转换并将转换后的数据保存回blobstore(作为新的blob).
原始答案(没有考虑Blobstore作为选项.)
对于下载,我认为GAE唯一的解决方法是将文件分解为服务器上的多个部分,然后在下载后重新组装.但是,使用直接浏览器实现可能并不可行.
(作为替代设计,也许您可以将转换后的文件从GAE发送到外部下载位置(例如S3),浏览器可以在没有GAE限制的情况下将其下载.我不相信GAE发起的连接有相同的请求/响应大小限制,但我不是正面的.无论如何,你仍然会受到30秒最大请求时间的限制.为了解决这个问题,你必须查看GAE后端实例并提出某种异步下载策略.)
为了上传更大的文件,我已经了解了使用HTML5文件API将文件切片到多个块进行上传,然后在服务器上重建的可能性.示例:http://www.html5rocks.com/en/tutorials/file/dndfiles/#toc-slicing-files.但是,由于规格和浏览器功能的变化,我认为解决方案并不实用.
归档时间: |
|
查看次数: |
8371 次 |
最近记录: |