код python для архивирования и загрузки папки с изображениями

#python #django #django-views #download #zipfile

Вопрос:

Я хотел бы загрузить изображения, загруженные в Django. В настоящее время я сжимаю папку и сначала сохраняю ее в одной из папок Django, а затем загружаю ее. После этого я удаляю заархивированную папку, которая находится в моем приложении Django.

Можно ли заархивировать папку и напрямую загрузить ее, не сохраняя в моей папке Django.

 zip_path = os.path.join(settings.MEDIA_ROOT, str(project), str(project)   "_images.zip")

    def make_archive(source, destination):
        base = os.path.basename(destination)
        name = base.split('.')[0]
        format = base.split('.')[1]
        archive_from = os.path.dirname(source)
        archive_to = os.path.basename(source.strip(os.sep))
        # print(source, destination, archive_from, archive_to)
        shutil.make_archive(name, format, archive_from, archive_to)
        shutil.move('%s.%s' % (name, format), destination)

    make_archive(src_path, zip_path)

    file_path = zip_path
    if os.path.exists(file_path):
        with open(file_path, 'rb') as fh:
            response = HttpResponse(fh.read(), content_type="application/force-download") 
            response['Content-Disposition'] = 'inline; filename='   os.path.basename(file_path)
            os.remove(file_path)
            if "selected" in request.POST:
                shutil.rmtree(src_path)
 

Комментарии:

1. Я думаю, что zip-папка -это то же самое, что создание zip-папки , и когда вы хотите загрузить эту папку, она должна присутствовать где-то в файловой системе. Вы не можете загрузить то, чего не существует.

2. вы должны попытаться использовать io.Bytes для создания файла в памяти. Это распространенный метод отправки сгенерированного изображения (или другого файла) без сохранения на диске.