Mam serwer z kolbą, który pobiera dane binarne dla kilku różnych plików z bazy danych i umieszcza je w pythonowym obiekcie "zipfile". Chcę wysłać wygenerowany plik ZIP z moim kodem za pomocą metody "send_file" skrzynki.Jak wysłać pliki zip do frameworka Python?
Początkowo mogłem pomyślnie wysyłać pliki z non-spakowaniem, używając BytesIO (bin) jako pierwszego argumentu dla send_file, ale z jakiegoś powodu nie mogę zrobić tego samego z wygenerowanym plikiem zip. Daje błąd:
"ZipFile" nie ma interfejsu bufora.
Jak wysłać obiekt zip do użytkownika za pomocą Flask?
To jest mój kod:
@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')
** Zobacz także: ** https://stackoverflow.com/questions/26513542/flask-how-to-send-a-dynamically- genera-z-zipfile-do-the-client – dreftymac