django压缩文件下载

2023-03-06 18:56:43 浏览数 (1)

# 简介

需求: 需要在请求时,将数据生成zip文件提供给用户下载。

不想要在生成后再提供给用户下载

解决: 使用BytesIO在内存中写入数据,而不是落地到本地中。

# 栗子

代码语言:javascript复制
from io import BytesIO
import zipfile
from django.http import FileResponse

def 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")

0 人点赞