目前我有一个GAE应用程序可以进行一些离线处理(备份用户数据),并生成一个大约10-100 MB附近的文件。我不确定向用户提供此文件的最佳方式。我正在考虑的两个选项是:
将一些代码添加到离线处理代码中,这些代码将其作为表单上传到欺诈商店进行“欺骗”,然后通过正常的blobstore进程来提供文件。
让离线处理代码将文件存储在GAE的某个位置,并从那里提供服务。
我有一个更好的方法吗?我猜这是一个不太适合GAE的功能。我曾想过在数据存储区中存储为db.Text或Dd.Blob,但我遇到了1 MB的限制。
任何输入都将不胜感激,
答案 0 :(得分:3)
我认为通过表单发布将它存储在blobstore中是您当前最好的选择。我们计划实施程序化的blobstore写作,但还没有准备好。
答案 1 :(得分:2)
我们需要提一下,从一段时间以前,您可以将blobstore的实验性产品用于write files。
然后,您可以使用漂亮的BlobstoreDownloadHandler
将文件作为下载文件提供答案 2 :(得分:1)
我会坚持使用第一个选项。准备blob将需要一些额外的编码,但blobstore API允许服务文件的字节范围:
http://code.google.com/appengine/docs/python/blobstore/overview.html#Serving_a_Blob
您不需要自己实现服务文件块。
答案 3 :(得分:0)
你有一些方法可以忽略,虽然我不确定它是否会好得多:
将数据拆分为多个1MB的块,并有单独的请求来传输块。
这需要外部应用程序的合作才能实际检索数据块;您可能希望使用HTTP Range标头来维护单个文件的错觉。然后有另一个对象来保存所有单个块的ID。