Откройте изображение в python и загрузите его на S3
Я пытался открыть файл/изображение в python/django и загрузить его на s3, но я получаю разные ошибки в зависимости от того, что я пробую. Я могу заставить его работать, когда отправляю изображение с помощью html-формы на передней стороне, но не при открытии файла на задней стороне. Я получаю ошибки типа "'bytes' object has no attribute 'file'" Любые идеи, как открыть изображение и загрузить его на s3? Я не был уверен, что использую правильную функцию загрузки, но она работала, когда я получал файл из html-формы, а не открывал его напрямую.
image = open(fileURL, encoding="utf-8")
S3_BUCKET = settings.AWS_BUCKET
session = boto3.Session(
aws_access_key_id=settings.AWS_ACCESS_KEY_ID,
aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY,
)
s3 = session.resource('s3')
s3.Bucket(S3_BUCKET).put_object(Key='folder/%s' % fileName, Body=image)
Спасибо.
Команда open
возвращает объект file
. Поэтому Body=image
не содержит фактического содержания объекта.
Поскольку вы хотите загрузить существующий объект, вы можете использовать:
Key = 'folder/' + fileName
s3.Object(S3_BUCKET, Key).upload_file(fileURL)