华为云对象存储OBS上传对象-获取上传进度(Python SDK)_云淘科技
本示例用于通过设置回调函数来获取上传对象的进度。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
from obs import ObsClient import os import traceback # 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险 # 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html ak = os.getenv("AccessKeyID") sk = os.getenv("SecretAccessKey") # 【可选】如果使用临时AKSK和SecurityToken访问OBS,则同样推荐通过环境变量获取 security_token = os.getenv("SecurityToken") # server填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 server = "https://obs.cn-north-4.myhuaweicloud.com" # 创建obsClient实例 # 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过security_token参数指定securityToken值 obsClient = ObsClient(access_key_id=ak, secret_access_key=sk, server=server) # 获取上传对象的进度 def callback(transferredAmount, totalAmount, totalSeconds): # 获取上传平均速率(KB/S) print(transferredAmount * 1.0 / totalSeconds / 1024) # 获取上传进度百分比 print(transferredAmount * 100.0 / totalAmount) try: bucketName = "examplebucket" # 对象名,即上传后的文件名 objectKey = "objectname" # 待上传文件/文件夹的完整路径,如aa/bb.txt,或aa/ file_path = 'localfile' # 文件上传 resp = obsClient.putFile(bucketName, objectKey, file_path, progressCallback=callback) # 返回码为2xx时,接口调用成功,否则接口调用失败 if resp.status < 300: print('Put File Succeeded') print('requestId:', resp.requestId) print('etag:', resp.body.etag) print('versionId:', resp.body.versionId) print('storageClass:', resp.body.storageClass) else: print('Put File Failed') print('requestId:', resp.requestId) print('errorCode:', resp.errorCode) print('errorMessage:', resp.errorMessage) except: print('Put File Failed') print(traceback.format_exc()) |
支持获取上传进度的接口包括:流式上传、文件上传、上传段、追加上传和断点续传上传。
父主题: 对象相关接口
同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家