【发布时间】:2022-09-23 01:59:53
【问题描述】:
这是我将图像上传到 AWS S3 的代码:
@app.post(\"/post_ads\")
async def create_upload_files(files: list[UploadFile] = File(description=\"Multiple files as UploadFile\")):
main_image_list = []
for file in files:
s3 = boto3.resource(
\'s3\',
aws_access_key_id = aws_access_key_id,
aws_secret_access_key = aws_secret_access_key
)
bucket = s3.Bucket(aws_bucket_name)
bucket.upload_fileobj(file.file,file.filename,ExtraArgs={\"ACL\":\"public-read\"})
有没有办法压缩图像大小并将图像上传到特定文件夹使用boto3?我有这个压缩图像的功能,但不知道如何将它集成到boto3中。
for file in files:
im = Image.open(file.file)
im = im.convert(\"RGB\")
im_io = BytesIO()
im = im.save(im_io, \'JPEG\', quality=50)
s3 = boto3.resource(
\'s3\',
aws_access_key_id = aws_access_key_id,
aws_secret_access_key = aws_secret_access_key
)
bucket = s3.Bucket(aws_bucket_name)
bucket.upload_fileobj(file.file,file.filename,ExtraArgs={\"ACL\":\"public-read\"})
更新#1
遵循克里斯的建议后,我的问题得到了解决:
这是克里斯的解决方案:
im_io.seek(0)
bucket.upload_fileobj(im_io,file.filename,ExtraArgs={\"ACL\":\"public-read\"})
-
克里斯我更新了我的问题。我修复了损坏的图像问题。现在我只想知道如何在上传 aws s3 存储桶之前压缩图像?我看到了答案,但没有正确理解。
-
@Chris 你能解释一下
bucket.upload_fileobj(im_io,...吗?是bucket.upload_fileobj(im,...吗? -
克里斯我试过
bucket.upload_fileobj(im_io,..,但上传后我的图片损坏了。我以前遇到过类似的问题。如果我删除我的图像压缩代码,那么我的原始图像上传没有任何问题 -
@Chris 是的,完全是零。请查看整行
bucket.upload_fileobj(im_io,file.filename,ExtraArgs={\"ACL\":\"public-read\", }) -
@Chris 我试过了,但现在大小仍然为零,并且无法从 url 查看图像。我也更新了我的问题
标签: python amazon-web-services amazon-s3 boto3 fastapi