Не удается загрузить файл BytesIO в Google Cloud Storage (Django) - PullRequest
0 голосов
/ 04 февраля 2019

Я использую Django с django-хранилищами для сохранения изображений в Google Cloud Storage.Но я получаю сообщение об ошибке каждый раз, когда пытаюсь загрузить изображение с измененным размером.

Моя модель содержит

def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
    image_asset = img.open(self.image)
    image_name = uuid.uuid4()

    image_asset.thumbnail((1200, 1200), img.ANTIALIAS)
    fi_io = io.BytesIO()
    image_asset.save(fi_io, format='JPEG', quality=90)
    self.image = InMemoryUploadedFile(
        fi_io,
        'ImageField',
        '%s.jpg' % image_name,
        'image/jpeg',
        sys.getsizeof(fi_io), None
    )

    super(Image, self).save(force_update=force_update)

Всякий раз, когда я пытаюсь сохранить изображение, я получаю эту ошибку (точный размер зависитв загруженном файле):

ValueError: Size 3984 was specified but the file-like object only had 3862 bytes remaining.

Без этого кода изображение сохраняется нормально.Также при переключении на хранилище S3 этот точный код работает без проблем.

...