7
我想生成一个zip文件并存储在App Engine的Blobstore中。现在,我没有从Blobstore获取有效的zip文件。不确定问题是与压缩,存储,检索或下载。生成Zip文件并存储在GAE BlobStore
我已经基于以下问题构建了基于片段的代码。
- Is it possible to generate and return a ZIP file with App Engine?
- Zipping dynamic files in App Engine (Python)
在Blob存储在存储之后,我让用户下载它通过应用瓶。
这是我想要做的事情的要点。
def zipit():
zipstream = StringIO.StringIO()
zfile = zipfile.ZipFile(file=zipstream, mode='w')
bytes = "lorem ipsum dolor sit amet"
zfile.writestr('loremipsum', bytes, compress_type=zipfile.ZIP_STORED)
zfile.close()
zipstream.seek(0)
return zipstream.getvalue()
zip_file = files.blobstore.create(mime_type='application/zip')
zip_data = zipit()
with files.open(zip_file, 'a') as f:
f.write(zip_data)
files.finalize(zip_file)
blob_key = files.blobstore.get_blob_key(zip_file)
blob_data = blobstore.BlobReader(blob_key).read()
# http://flask.pocoo.org/docs/api/
response = make_response(blob_data)
response.headers['Content-Type'] = 'application/zip'
response.headers['Content-Disposition'] = 'attachment; filename="loremipsum.zip"'
return response
任何帮助,非常感谢。
谢谢!你的代码有效。在检索过程中可能会损坏。该程序建立在Flask上,这就是为什么我阅读文件并提供服务的原因。我试过send_blob,但它需要头文件可用。我将不得不找到一些解决方法来直接通过Flask框架来提供blob文件。 – 2012-02-21 04:46:32
看起来这是谁处理这些URL的问题。对于blobstore中的图像,有get_serving_url。我还没有找到如何通过Flask从blobstore提供文件。 – 2012-02-21 09:57:17
另一个步骤。 012.回到页首'response.headers ['Content-Type'] ='application/zip'' 'response.headers ['X-AppEngine-BlobKey'] = blob_key' 'response.headers ['Content-Type'] ='application/zip'' 'response.headers ['Content-Disposition'] ='附件; filename =“loremipsum.zip”'' 'return response' 但是这并不能解决原来的问题! – 2012-02-21 17:06:19