本文共 462 字,大约阅读时间需要 1 分钟。
需求:
需要在请求时,将数据生成zip文件提供给用户下载。不想要在生成后再提供给用户下载
解决:
使用BytesIO在内存中写入数据,而不是落地到本地中。from io import BytesIOimport zipfilefrom django.http import FileResponsedef view(): download_io = BytesIO() with zipfile.ZipFile(pb_zip_io, "w", zipfile.ZIP_DEFLATED) as zip_fp: zip_fp.open("a.txt", "w") as f: f.write("hello world") # 注意,需要要将指针指向内存的开始位置 download_io.seek(0) return FileResponse(download_io, as_attachment=True, filename="a.zip")
转载地址:http://zakjn.baihongyu.com/