Django Rest возвращает 0 байтов zip файла в ответ - PullRequest
1 голос
/ 12 апреля 2019

У меня есть простой метод, который возвращает zip-архив с файлом .pdf.Вот часть кода, который генерирует zip-архив и возвращает его:

pdf_file = HTML(string=rendered_html, base_url=request.build_absolute_uri()).write_pdf()
temp = tempfile.TemporaryFile()
archive = zipfile.ZipFile(temp, 'w', zipfile.ZIP_DEFLATED)
with archive:
    archive.writestr('report.pdf', pdf_file)
wrapper = FileWrapper(temp)

http_response = HttpResponse(wrapper, content_type='application/zip')
http_response['Content-Disposition'] = 'attachment; filename=report.zip'

return http_response

Проблема в том, что я получаю в ответ 0-байтовый zip-архив.Что я делаю не так?

ОБНОВЛЕНО

Также я добавляю эти 2 строки кода перед return, но с этим я получаю seek of closed file

http_response['Content_Length'] = temp.tell()
temp.seek(0)

1 Ответ

0 голосов
/ 10 мая 2019

Спасибо за помощь @Will Keeling

Я решил свою проблему, добавив temp.seek() до HttpResponse и удалив http_response['Content_Length'] = temp.tell(), потому что мы не можем использовать temp после его закрытия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...