Как сохранить файлы внутри каталога для временного хранения и создать 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)

Это еще требует большой работы, чтобы избежать, например, столкновения имен файлов, если в папке уже есть файлы.

Вернуться на верх