如何从 GAE 下载大 Zip

How to download a large Zip from GAE

我使用了此处建议的方法: Creating ZIP archives in Google App Engine ( Java)
在这里 How to create a zip archive containing google cloud storage objects within appengine java app? return 一个 zip 文件,我遇到的问题是响应大于允许的 ~30M。处理它的最佳做法是什么?

最佳方式是保存到存储桶,然后从那里提供。

它还允许您:

  • 从 TaskQueue 作业准备文件,该作业不限于 60 秒,因此您可以处理更多数据、处理错误等
  • 赋予用户pause/resume下载、使用下载管理器等的能力,w/o强制您的前端每次都从头开始工作

基本上我的建议是:

  1. 为后端作业
  2. 为用户提供TicketId
  3. 发送任务到任务队列
  4. 在后端作业中准备数据,上传到存储桶,设置TicketIddone
  5. 浏览器等待 TicketId 被标记为 done(频道 API 的AJAX)
  6. 然后一个特殊的 servlet 从 Storage
  7. 中提供这个文件

稍后提供此文件有两个选项:

(最优)直接给Storage对象一个link:

或使用 Blobstore:

BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
BlobKey blobKey = blobstoreService.createGsBlobKey("/gs/<bucket>/<object>");
blobstoreService.serve(blobKey, resp); //where resp is your HttpServletResponse