Django 文件打包下载:使用 zipfile 模块实现
可以使用 Python 的 zipfile 模块来将多个文件打包成一个 zip 文件,然后提供下载链接给用户下载。
以下是一个简单的示例代码:
import os
import zipfile
from django.http import HttpResponse
def download_files(request):
# 获取要打包的文件列表
file_paths = ['/path/to/file1.txt', '/path/to/file2.txt', '/path/to/file3.txt']
# 创建一个临时 zip 文件
zip_file_path = '/path/to/tmp.zip'
with zipfile.ZipFile(zip_file_path, 'w') as zip_file:
for file_path in file_paths:
# 将每个文件添加到 zip 文件中
zip_file.write(file_path, os.path.basename(file_path))
# 构造 HttpResponse 对象并设置 Content-Disposition 头部,提示浏览器进行下载
response = HttpResponse(open(zip_file_path, 'rb').read())
response['Content-Type'] = 'application/zip'
response['Content-Disposition'] = 'attachment;filename='files.zip''
# 删除临时 zip 文件
os.remove(zip_file_path)
return response
在上面的例子中,我们首先获取要打包的文件列表,然后使用 zipfile 模块将这些文件打包成一个临时 zip 文件。接着,我们构造一个 HttpResponse 对象并设置 Content-Disposition 头部,告诉浏览器这是一个附件,需要下载保存。最后,我们删除临时 zip 文件,以免占用过多的磁盘空间。
原文地址: http://www.cveoy.top/t/topic/ongg 著作权归作者所有。请勿转载和采集!