56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
# -*- coding: utf-8 -*-# pip install oss2
|
||
import os
|
||
import oss2
|
||
from oss2.credentials import EnvironmentVariableCredentialsProvider
|
||
|
||
from Config.Config import ALY_AK, ALY_SK, ALY_ENDPOINT, ALY_REGION, ALY_BUCKET, ALY_OSS_PREFIX
|
||
|
||
|
||
def upload_to_oss(local_file_path: str, object_name: str) -> bool:
|
||
"""
|
||
将本地文件上传到阿里云OSS
|
||
@param local_file_path: 本地文件的完整路径
|
||
@param object_name: OSS上的对象名称,完整路径中不能包含Bucket名称
|
||
@return: 上传成功返回True,失败返回False
|
||
"""
|
||
try:
|
||
# 设置环境变量获取访问凭证
|
||
os.environ['OSS_ACCESS_KEY_ID'] = ALY_AK
|
||
os.environ['OSS_ACCESS_KEY_SECRET'] = ALY_SK
|
||
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
|
||
|
||
# 创建Bucket对象
|
||
bucket = oss2.Bucket(auth, ALY_ENDPOINT, ALY_BUCKET, region=ALY_REGION)
|
||
|
||
# 上传文件
|
||
print(f"开始上传文件: {local_file_path} 到 OSS: {object_name}")
|
||
bucket.put_object_from_file(object_name, local_file_path)
|
||
print(f"文件上传成功: {object_name}")
|
||
return True
|
||
except Exception as e:
|
||
print(f"文件上传失败: {str(e)}")
|
||
return False
|
||
|
||
|
||
def get_url(file_name):
|
||
key = f'{ALY_OSS_PREFIX}/{file_name}'
|
||
aly_endpoint = ALY_ENDPOINT.replace("https://", "")
|
||
url = f"https://{ALY_BUCKET}.{aly_endpoint}/{key}"
|
||
return url
|
||
|
||
|
||
# 示例用法
|
||
if __name__ == '__main__':
|
||
# 本地文件的完整路径
|
||
local_file_path = r'/Dsideal/handwriting.jpg'
|
||
|
||
# 填写Object完整路径,完整路径中不能包含Bucket名称
|
||
object_name = 'HuangHai/handwriting.jpg'
|
||
|
||
# 调用函数上传文件
|
||
upload_success = upload_to_oss(local_file_path, object_name)
|
||
if upload_success:
|
||
print("上传操作完成")
|
||
else:
|
||
print("上传操作失败")
|