How to send zip files in the python Flask framework? How to send zip files in the python Flask framework? python python

How to send zip files in the python Flask framework?


BytesIO() needs to be passed bytes data, but a ZipFile() object is not bytes-data; you actually created a file on your harddisk.

You can create a ZipFile() in memory by using BytesIO() as the base:

memory_file = BytesIO()with zipfile.ZipFile(memory_file, 'w') as zf:    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'])memory_file.seek(0)return send_file(memory_file, attachment_filename='capsule.zip', as_attachment=True)

The with statement ensures that the ZipFile() object is properly closed when you are done adding entries, causing it to write the required trailer to the in-memory file object. The memory_file.seek(0) call is needed to 'rewind' the read-write position of the file object back to the start.