Initial commit
This commit is contained in:
84
tools/shared/oss_upload.py
Normal file
84
tools/shared/oss_upload.py
Normal file
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env python
|
||||
#coding=utf-8
|
||||
|
||||
import os
|
||||
import oss2
|
||||
from oss2 import Auth
|
||||
|
||||
def upload_file_to_oss(local_file_path, bucket_name, object_name, access_key_id, access_key_secret, endpoint='https://oss-cn-beijing.aliyuncs.com'):
|
||||
"""
|
||||
上传文件到OSS
|
||||
:param local_file_path: 本地文件路径
|
||||
:param bucket_name: OSS桶名称
|
||||
:param object_name: OSS对象名称
|
||||
:param access_key_id: 阿里云AccessKey ID
|
||||
:param access_key_secret: 阿里云AccessKey Secret
|
||||
:param endpoint: OSS端点,默认为北京区域
|
||||
:return: OSS文件URL
|
||||
"""
|
||||
print(f"开始上传文件到OSS: {local_file_path}")
|
||||
|
||||
try:
|
||||
# 创建OSS客户端
|
||||
auth = Auth(access_key_id, access_key_secret)
|
||||
bucket = oss2.Bucket(auth, endpoint, bucket_name)
|
||||
|
||||
# 上传文件
|
||||
bucket.put_object_from_file(object_name, local_file_path)
|
||||
print(f"文件上传成功: {object_name}")
|
||||
|
||||
# 生成可访问的URL
|
||||
# 注意:这里生成的是临时URL,有效期为3600秒
|
||||
# 如果需要永久URL,需要在OSS桶中设置文件为公共读
|
||||
url = bucket.sign_url('GET', object_name, 3600)
|
||||
print(f"生成OSS文件URL: {url}")
|
||||
|
||||
return url
|
||||
|
||||
except Exception as e:
|
||||
print(f"文件上传失败: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
return None
|
||||
|
||||
def make_bucket_public(bucket_name, access_key_id, access_key_secret, endpoint='https://oss-cn-beijing.aliyuncs.com'):
|
||||
"""
|
||||
设置OSS桶为公共读
|
||||
:param bucket_name: OSS桶名称
|
||||
:param access_key_id: 阿里云AccessKey ID
|
||||
:param access_key_secret: 阿里云AccessKey Secret
|
||||
:param endpoint: OSS端点,默认为北京区域
|
||||
:return: 是否设置成功
|
||||
"""
|
||||
print(f"开始设置OSS桶为公共读: {bucket_name}")
|
||||
|
||||
try:
|
||||
# 创建OSS客户端
|
||||
auth = Auth(access_key_id, access_key_secret)
|
||||
bucket = oss2.Bucket(auth, endpoint, bucket_name)
|
||||
|
||||
# 设置桶的访问策略为公共读
|
||||
policy = """
|
||||
{
|
||||
"Version": "1",
|
||||
"Statement": [
|
||||
{
|
||||
"Action": ["oss:GetObject"],
|
||||
"Effect": "Allow",
|
||||
"Principal": ["*"],
|
||||
"Resource": ["acs:oss:*:*:{bucket_name}/*"],
|
||||
"Condition": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
""".format(bucket_name=bucket_name)
|
||||
|
||||
bucket.put_bucket_policy(policy)
|
||||
print(f"OSS桶设置为公共读成功: {bucket_name}")
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"OSS桶设置失败: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
return False
|
||||
Reference in New Issue
Block a user