如何通过FastAPI压缩图片并上传至AWS S3存储桶?
问题:如何用boto3实现图片压缩后上传至AWS S3指定文件夹?
我原本用于将图片上传至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
遵循Chris的建议后,我的问题已解决:
解决方案代码如下:
im_io.seek(0) bucket.upload_fileobj(im_io,file.filename,ExtraArgs={"ACL":"public-read"})
内容的提问来源于stack exchange,提问作者hawaj
相关产品推荐
相关产品推荐

