içinde Zip Dosyaları ve Deposu Oluşturun Bir zip dosyası oluşturmaya ve App Engine Blobstore'da depolamaya çalışıyorum. Şu anda Blobstore'dan geçerli bir zip dosyası almıyorum. Sorunun sıkıştırılması, saklanması, geri yüklenmesi veya indirilmesiyle ilgili olduğundan emin değilsiniz.GAE BlobStore
Aşağıdaki sorulardan kodları temel alarak kodu oluşturdum. Blobstore saklamadan sonra
-
, Kullanıcıların bir Matara uygulaması üzerinden indirmek sağlar.
Yapmaya çalıştığım şeyin özü.
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
Herhangi bir yardım çok takdir edilmektedir.
Teşekkürler! Kodun çalışıyor. Muhtemelen alma sırasında bozuluyor. Program Flask üzerine kurulu ve bu yüzden dosyayı okuyup hizmet etmemin sebebi de bu. Send_blob'u denedim, ancak başlıkların kullanılabilir olmasını gerektirir. Bloğu dosyaya doğrudan Flask çerçevesinde sunmak için bazı geçici çözümler bulmam gerekecek. –
Bu, URL'leri kimin ele alacağıyla ilgili bir sorun gibi görünüyor. Blobstore'daki resimler için get_serving_url var. Şişkodan, Flask'tan dosyalara nasıl hizmet verileceğini henüz öğrenmiyorum. –
Başka bir adım. 'yanıt = make_response() ' ' response.headers [ 'X-AppEngine-BlobKey'] = blob_key' 'response.headers [ 'içerik türü'] = 'Uygulama/zip'' ' response.headers ['Content-Disposition'] = 'eki; filename = "loremipsum.zip" ' 'dönüş yanıtı' Ancak, bu hala orijinal sorunu çözmez! –