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