Если вы используете Python 3, вы должны сделать это так:
import os, io, zipfile, requests
from django.http import HttpResponse
# Get file
url = 'https://some.link/img.jpg'
response = requests.get(url)
# Get filename from url
filename = os.path.split(url)[1]
# Create zip
buffer = io.BytesIO()
zip_file = zipfile.ZipFile(buffer, 'w')
zip_file.writestr(filename, response.content)
zip_file.close()
# Return zip
response = HttpResponse(buffer.getvalue())
response['Content-Type'] = 'application/x-zip-compressed'
response['Content-Disposition'] = 'attachment; filename=album.zip'
return response
Это без сохранения файла.Загруженный файл идет непосредственно к io
.
. Чтобы ответить на сохраненный файл, используйте следующий синтаксис:
response = HttpResponse(open('path/to/file', 'rb').read())