通過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的配置桶名?