Как сохранить файлы внутри каталога для временного хранения и создать zip-файл?
Здесь у меня есть список изображений, которые я хочу сделать zip и загрузить. Для этого я попытался сначала загрузить эти изображения в каталог проекта, а затем попытался сделать zip из этих загруженных файлов.
Я получаю эту ошибку:
IOError: [Errno 21] Is a directory: '/home/project/images'
Как я могу отправить zip файл с этими изображениями?
images_list = [image_absolute_url1, image_absolute_url2]
folder = os.path.join(BASE_DIR, "images")
os.mkdir(folder)
with open(folder, 'wb+') as f:
for file in images_list:
f.write(file)
response = HttpResponse(content_type='application/zip')
zip_file = zipfile.ZipFile(response, 'w')
for filename in images_list:
zip_file.write(filename)
response['Content-Disposition'] = 'attachment; zip_file'
return response
Вы должны открывать (и автоматически создавать) файлы в папке. Вы не можете открывать и записывать в саму папку (она же каталог).
В основном это может выглядеть следующим образом:
from os.path import join
.
.
.
for i, imgfile in enumerate(images_list):
with open(join(folder, str(i)), 'wb+') as f:
f.write(imgfile)
Это еще требует большой работы, чтобы избежать, например, столкновения имен файлов, если в папке уже есть файлы.