You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:05:23