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()


浙公网安备 33010602011771号