Django压缩包形式下载文件
通过web将minio上的文件以压缩包-文件夹-文件的形式下载到本地
import os
from bx_mes import settings
from io import BytesIO
import zipfile
from django.http import StreamingHttpResponse
class FileRemote(GenericAPIView):def post(self,request):# 压缩包名folder_name = "bx_folder1" # minio的urlfile_list = [{"folder1":["2025/03/31/6e1740680ddc11f095c444a191981b27/23.pdf","2025/03/31/a13eb27c0dd811f095bb44a191981b27/mes测试进度统计.txt"]},{"folder2":["2025/04/16/2dbc67321a7511f0992e44a191981b27/mes_test.pdf"]}]zip_buffer = BytesIO()with zipfile.ZipFile(zip_buffer, 'w', zipfile.ZIP_DEFLATED) as zip_file:for folder_key in file_list:for folder in folder_key:for file in folder_key[folder]:# minio获取文件obj = MinioClass.remate_file(file)# 创建文件夹zip_path = os.path.join(folder, file.split('/')[4])zip_file.writestr(zip_path, obj.read())zip_buffer.seek(0)response = StreamingHttpResponse(zip_buffer,content_type='application/zip')response['Content-Disposition'] = f'attachment; filename="{folder_name}.zip"'return response
上述minio获取文件的函数
def remate_file(cls,file_route):
obj = minioClient.get_object(config.FILE_BUCKETS,file_route)
return obj
config.FILE_BUCKETS settings 中minio的配置桶名