BytesIO()需要传递 字节数据 ,但
ZipFile()对象不是字节数据;您实际上在 硬盘上 创建了一个文件。
您可以
ZipFile()使用
BytesIO()作为基础 在内存中创建一个:
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)
该
with语句确保在
ZipFile()完成添加条目后,该对象已正确关闭,从而使该对象将所需的尾部写入内存文件对象。该
memory_file.seek(0)电话是需要“倒带”文件对象回到开始的读写位置。



