import os
import zipfile
from django.http import HttpResponse
def compress_folder(request, folder_path):
# 设置ZIP文件名
zip_filename = os.path.basename(folder_path) + '.zip'
# 创建一个空的内存文件来保存ZIP内容
temp_zip = zipfile.ZipFile(zip_filename, 'w', zipfile.ZIP_DEFLATED)
# 遍历文件夹中的文件并添加到ZIP文件中
for dirpath, dirnames, filenames in os.walk(folder_path):
for file in filenames:
# 创建文件的完整路径
absolute_path = os.path.join(dirpath, file)
# 计算文件在ZIP文件中的相对路径
relative_path = os.path.relpath(absolute_path, folder_path)
# 将文件添加到ZIP文件中
temp_zip.write(absolute_path, relative_path)
# 关闭ZIP文件
temp_zip.close()
# 打开ZIP文件准备读取内容
with open(zip_filename, 'rb') as zip_file:
response = HttpResponse(zip_file.read(), content_type='application/zip')
response['Content-Disposition'] = 'attachment; filename=%s' % zip_filename
return response
django 压缩zip文件返回给前端
最新推荐文章于 2024-10-02 08:00:00 发布