Ich habe einen Flaschen-Server, der Binärdaten für mehrere verschiedene Dateien aus einer Datenbank ergreift und sie in ein Python-Objekt 'zipfile' legt. Ich möchte die generierte ZIP-Datei mit meinem Code senden, indem ich die Methode "send_file" von flask verwende.Wie Zip-Dateien im Python-Flask-Framework senden?
Ich konnte ursprünglich non-zip-Dateien erfolgreich senden, indem ich das BytesIO (bin) als erstes Argument für send_file verwendete, aber aus irgendeinem Grund kann ich das nicht mit meiner generierten Zip-Datei machen. Es gibt den Fehler:
'ZipFile' verfügt nicht über die Pufferschnittstelle.
Wie sende ich dieses Zip-Dateiobjekt an den Benutzer mit Flask?
Dies ist mein Code:
@app.route("/getcaps",methods=['GET','POST'])
def downloadFiles():
if request.method == 'POST':
mongo = MongoDAO('localhost',27017)
identifier = request.form['CapsuleName']
password = request.form['CapsulePassword']
result = mongo.getCapsuleByIdentifier(identifier,password)
zf = zipfile.ZipFile('capsule.zip','w')
files = result['files']
for individualFile in files:
data = zipfile.ZipInfo(individualFile['fileName'])
data.date_time = time.localtime(time.time())[:6]
data.compress_type = zipfile.ZIP_DEFLATED
zf.writestr(data,individualFile['fileData'])
return send_file(BytesIO(zf), attachment_filename='capsule.zip', as_attachment=True)
return render_template('download.html')
** Siehe auch: ** https://stackoverflow.com/questions/26513542/flask-how-to-send-a-dynamically-generate-zipfile-to-the-client – dreftymac