Отправьте zip-файл в качестве ответа с помощью python
Возможно, этот вопрос уже задавался, но я размещаю его снова, так как не нашел способа решить свою проблему.
Мне дали zip-файл, который я должен отправить в UI, откуда он должен быть загружен для пользователя. При тестировании на POSTMAN, используя кнопку Send & Download, связанную с POST, я могу загрузить файл. Но при его открытии появляется сообщение:
Windows не может открыть папку. Путь к сжатой (застегнутой) папке <zip> недействителен
.
Вот код, который я пытаюсь использовать:
from django.response import Response
from rest_framework.views import APIView
def get_response():
with open(zip_file_path.zip, 'r', encoding='ISO-8859-1') as f:
file_data = f.read()
response = Response(file_data, content_type='application/zip')
response['Content-Disposition'] = 'attachment; filename="ReportTest.zip"'
return response
class GenerateZIP(APIView):
def post(self, request):
zip_file_response = get_response()
return zip_file_response
Чтение zip-файла действительно, так как он уже находится на локалке. Есть идеи?
Вместо того чтобы генерировать ответ самостоятельно, вы можете использовать FileResponse, который сделает это за вас
from django.http import FileResponse
from rest_framework.views import APIView
class GenerateZIP(APIView):
def post(self, request):
return FileResponse(
open('zip_file_path.zip', 'rb'),
as_attachment=True,
filename='ReportTest.zip'
)