Как вы загружаете измененное изображение непосредственно в корзину S3, используя колбу Python - PullRequest
1 голос
/ 22 сентября 2019

Я пытаюсь просто изменить изображение (изменить его размер), которое было загружено через форму, а затем загрузить непосредственно в корзину s3.Пример, который я использую ниже, работает, когда я сохраняю локальные файлы, но у меня возникают проблемы при загрузке на s3.

 def _image_resize(temp_path, file, image_base, extension):
    image = Image.open(file)
    wpercent = (image_base / float(image.size[0]))
    hsize = int((float(image.size[1]) * float(wpercent)))
    image = image.resize((image_base, hsize), Image.ANTIALIAS)
    modified_file_path = os.path.join(
        temp_path, file.filename + '.' + extension + '.png'
    )
    image.save(modified_file_path)
    with open(modified_file_path, 'rb') as data:
        upload_file_to_s3(data, Config.S3_BUCKET_NAME)
    return

def upload_file_to_s3(file, bucket_name, acl="public-read"):
        """
        Docs: http://boto3.readthedocs.io/en/latest/guide/s3.html
        """

        try:

            s3.upload_fileobj(
                file,
                bucket_name,
                ExtraArgs={
                    "ACL": acl
                }
            )

        except Exception as e:
            print("Something Happened: ", e)
            return e

        return

1 Ответ

1 голос
/ 22 сентября 2019

Используйте функцию upload_fileobj для даты в байтах в пакете boto3 следующим образом:

import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('mybucket')
obj = bucket.Object('mykey')

with open('filename', 'rb') as data:
    obj.upload_fileobj(data)

, где необходимо установить ключи API, такие как AWS ACCESS KEY и SECRET KEY, с помощью AWS CLI с aws configure.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...