Home > Mobile >  Open an image in python and upload it to S3
Open an image in python and upload it to S3

Time:08-31

I was trying to open a file/image in python/django and upload it to s3 but I get different errors depending on what I try. I can get it to work when I send the image using the front end html form but not when opening the file on the back end. I get errors such as "'bytes' object has no attribute 'file'" Any ideas how to open an image and upload it to s3? I wasn't sure if I was using the correct upload function, but it worked when I received the file from an html form instead of opening it directly.

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)

Thanks.

CodePudding user response:

The open command return a file object. Therefore Body=image does not contain the actual contents of the object.

Since you want to upload an existing object, you could use:

Key = 'folder/'   fileName
s3.Object(S3_BUCKET, Key).upload_file(fileURL)
  • Related