创建用户

创建完成后,先将AccessKey ID 和AccessKey Secret保存下来,否则后面找不到

设置权限
给用户添加AliyunOSSFullAccess权限


创建Bucket
在导航栏的搜索框中搜索oss,进入oss控制台,点击创建Bucket
创建时,区域选择后,最好先记下红框中的内容,后面要用到

代码
环境:Python >= 3.8
bash
pip install alibabacloud-oss-v2
python
import alibabacloud_oss_v2 as oss
class MyConfig:
access_key_id = "LTAI5t5ampc6a2kw9s2163kT" # AccessKey ID
access_key_secret = "Q3OvDaFiV7AXbdMZRXAYEX3AWKOvQb" # AccessKey Secret
# 地域 ID,根据创建bucket时所选区域从表格中查找
# 表格 https://help.aliyun.com/zh/oss/user-guide/regions-and-endpoints?spm=a2c4g.11186623.0.0.24d149bf7HpEjp#concept-zt4-cvy-5db
region = "cn-beijing"
# endpoint与区域对应
endpoint = "https://oss-cn-beijing.aliyuncs.com"
bucket = "test-cry" # bucket名称
key = "1.png" # 上传到bucket后的文件名
file_path = "C:\\Users\\10239\\Pictures\\1.png" # 上传的文件路径
def main():
# 使用静态凭证
credentials_provider = oss.credentials.StaticCredentialsProvider(MyConfig.access_key_id, MyConfig.access_key_secret)
# 加载SDK的默认配置,并设置凭证提供者
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
# 设置配置中的区域信息
cfg.region = MyConfig.region
# 如果提供了endpoint参数,则设置配置中的endpoint
if MyConfig.endpoint is not None:
cfg.endpoint = MyConfig.endpoint
# 使用配置好的信息创建OSS客户端
client = oss.Client(cfg)
# 定义一个字典变量 progress_state 用于保存上传进度状态,初始值为 0
progress_state = {'saved': 0}
def _progress_fn(n, written, total):
# 使用字典存储累计写入的字节数,避免使用 global 变量
progress_state['saved'] += n
# 计算当前上传百分比,将已写入字节数与总字节数进行除法运算后取整
rate = int(100 * (float(written) / float(total)))
# 打印当前上传进度,\r 表示回到行首,实现命令行中实时刷新效果
# end='' 表示不换行,使下一次打印覆盖当前行
print(f'\r上传进度:{rate}% ', end='')
# 执行上传对象的请求,指定存储空间名称、对象名称和数据内容
result = client.put_object_from_file(oss.PutObjectRequest(
bucket=MyConfig.bucket,
key=MyConfig.key,
progress_fn=_progress_fn,
),
MyConfig.file_path, # 指定本地文件路径
)
# 输出请求的结果状态码、请求ID、内容MD5、ETag、CRC64校验码和版本ID,用于检查请求是否成功
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
f' content md5: {result.content_md5},'
f' etag: {result.etag},'
f' hash crc64: {result.hash_crc64},'
f' version id: {result.version_id},'
)
if __name__ == "__main__":
main() # 脚本入口,当文件被直接运行时调用main函数
运行后,到bucket中查看文件
