django压缩文件下载
# 简介
需求: 需要在请求时,将数据生成zip文件提供给用户下载。
不想要在生成后再提供给用户下载
解决: 使用BytesIO在内存中写入数据,而不是落地到本地中。
# 栗子
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")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
上次更新: 2023/05/01, 18:02:43