boto3上传文件

使用boto3上传文件到存储桶

先下载boto3

pip install boto3==1.18.47 -i https://pypi.tuna.tsinghua.edu.cn/simple/

我是使用的是1.18.47版本

通过文件路径上传文件

import boto3
from config import access_key, secret_key

def upload_file_to_s3(file_path, bucket_name, object_name, aws_access_key_id, aws_secret_access_key):
    s3 = boto3.client('s3', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key)

    # 上传文件到S3存储桶
    s3.upload_file(file_path, bucket_name, object_name)
    # 生成文件的URL链接
    url = s3.generate_presigned_url('get_object',
                                    Params={'Bucket': bucket_name, 'Key': object_name},
                                    ExpiresIn=3600)  # URL的有效期为1小时

    return url


# 使用示例
file_path = '640x420.jpg'  # 待上传的文件路径
bucket_name = 'mydata'  # 存储桶名称
object_name = 'a2.png'  # 上传到S3后的对象名称
access_key = access_key  # AWS Access Key
secret_key = secret_key  # AWS Secret Access Key

url = upload_file_to_s3(file_path, bucket_name, object_name, access_key, secret_key)
print(f"文件已上传至S3,并且URL链接为: {url}")

这个返回的 url是文件的下载地址

比如报这个错

说ssl链接什么的,我觉的就是ssl链接重用问题,使用完没有关闭,也有可能是你开着vpn

那么我们就是使用session来管理这个会话

import boto3


def upload_file_to_s3(file_path, bucket_name, folder_name, object_name, access_key, secret_key):
    session = boto3.Session(aws_access_key_id=access_key, aws_secret_access_key=secret_key)
    s3 = session.client('s3')

    # 上传文件到S3存储桶
    s3.upload_file(file_path, bucket_name, f"{folder_name}/{object_name}")

    # 生成文件的URL链接
    url = f"https://{bucket_name}.s3.amazonaws.com/{folder_name}/{object_name}"

    return url






# 使用示例
file_path = "640x420.jpg"  # 待上传的文件路径
bucket_name = 'mydata'  # 存储桶名称
folder_name = 'img'  # 文件夹名称
object_name = 'a4.png'  # 上传到S3后的对象名称
access_key = access_key
secret_key = secret_key

这样就解决了

通过文件对象上传文件


def upload_file_to_s3(file_path, bucket_name, folder_name, object_name, access_key, secret_key):
    session = boto3.Session(aws_access_key_id=access_key, aws_secret_access_key=secret_key)
    s3 = session.client('s3')

    # 上传文件到S3存储桶
    s3.upload_fileobj(file_path, bucket_name, f"{folder_name}/{object_name}")

    # 生成文件的URL链接
    url = f"https://{bucket_name}.s3.amazonaws.com/{folder_name}/{object_name}"

    return url






# 使用示例
file_path = open("1.jpg", "rb")  # 待上传的文件路径
bucket_name = 'mydata'  # 存储桶名称
folder_name = 'img/'  # 文件夹名称
object_name = 'a3.png'  # 上传到S3后的对象名称
access_key = access_key
secret_key = secret_key

url = upload_file_to_s3(file_path, bucket_name, folder_name, object_name, access_key, secret_key)
print(f"文件已上传至S3存储桶,并且URL链接为: {url}")
file_path.close()

posted @ 2023-06-14 12:33  可否  阅读(890)  评论(1)    收藏  举报