Архивирование нескольких файлов CSV на сервере с помощью StreamingResponse в Python
Я пытаюсь создать Zip-файл через StreamingResponse (чтобы он не сохранялся локально) на моем сервере для отправки во внешний интерфейс. Zip-файл будет содержать файлы CSV, преобразованные из нескольких фреймов данных. Пока я получаю Zip-файл через Postman, но когда я пытаюсь его открыть, я получаю сообщение об ошибке, указывающее, что Zip-файл поврежден:Ошибка
Код, который я написал до сих пор:
def prepare_zip(dafaframes):
outfile = io.BytesIO()
with zipfile.ZipFile(outfile, 'w') as zf:
for n, f in enumerate(dafaframes):
stream = io.StringIO()
f.to_csv(stream, index=False)
stream.seek(0)
csv_buffer = stream.read()
zf.writestr("{}.csv".format(n), csv_buffer)
# Returns a csv prepared to be downloaded in the FrontEnd
outfile.seek(0)
response = StreamingResponse(outfile,
media_type="application/x-zip-compressed"
)
response.headers["Content-Disposition"] = "attachment; filename=test.zip"
return response
Параметр dataframes - это список, содержащий фреймы данных, которые предполагается преобразовать в CSV и хранить в Zip-файле.