更新时间:2026-06-30 GMT+08:00

下载对象-图片处理(Python SDK)

代码样例一:生成带授权信息的下载URL

本示例用于生成图片处理的带授权信息的URL。

 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
import os
import traceback

from obs import ObsClient

# 推荐通过环境变量获取AK/SK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险
# 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/intl/zh-cn/usermanual-ca/ca_01_0003.html
ak = os.getenv("AccessKeyID")
sk = os.getenv("SecretAccessKey")
# 如需使用临时AK/SK和SecurityToken访问OBS,则同样推荐通过环境变量获取
# security_token = os.getenv("SecurityToken")
# server填写Bucket对应的Endpoint,这里以中国-香港为例,其他地区请按实际情况填写
server = "https://obs.ap-southeast-1.myhuaweicloud.com" 
# 创建obsClient实例
# 如果使用临时AK/SK和SecurityToken访问OBS,需要在创建实例时通过security_token参数指定securityToken值
obs_client = ObsClient(access_key_id=ak, secret_access_key=sk, server=server) 
try: 
    # 对象所在的桶名 
    bucket_name = 'originBucketName' 
    # 对象名 
    object_key = 'test.png' 
    query_params = {"x-image-process": "image/resize, w_100"} 
    # 生成图片处理的带授权信息的URL 
    res = obs_client.createSignedUrl(method='GET', bucketName=bucket_name, objectKey=object_key, queryParams=query_params, 
                                    expires=3600) 
    print('signedUrl:', res.signedUrl) 
except Exception: 
    print(traceback.format_exc())

代码样例二:断点续传下载

本示例用于在断点续传下载时进行图片处理。

 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
import os
import traceback

from obs import ObsClient

# 推荐通过环境变量获取AK/SK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险
# 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/intl/zh-cn/usermanual-ca/ca_01_0003.html
ak = os.getenv("AccessKeyID")
sk = os.getenv("SecretAccessKey")
# 如需使用临时AK/SK和SecurityToken访问OBS,则同样推荐通过环境变量获取
# security_token = os.getenv("SecurityToken")
# server填写Bucket对应的Endpoint,这里以中国-香港为例,其他地区请按实际情况填写
server = "https://obs.ap-southeast-1.myhuaweicloud.com" 
# 创建obsClient实例
# 如果使用临时AK/SK和SecurityToken访问OBS,需要在创建实例时通过security_token参数指定securityToken值
obs_client = ObsClient(access_key_id=ak, secret_access_key=sk, server=server) 
try: 
    bucket_name = "examplebucket" 
    # 对象名 
    object_key = "example.png" 
    # 下载到本地的路径, 包含本地文件名称的全路径 
    download_file = './example.png' 
    # 分段下载的并发数 
    task_num = 3 
    # 分段的大小 
    part_size = 5 * 1024 * 1024 
    # True表示开启断点续传 
    enable_checkpoint = True 
    # 图片处理参数 
    image_process = "image/resize, w_100" 
    # 断点续传下载对象 
    resp = obs_client.downloadFile(bucket_name, object_key, download_file, part_size, task_num, imageProcess=image_process) 

    # 返回码为2xx时,接口调用成功,否则接口调用失败 
    if resp.status < 300: 
        print('Download File Succeeded') 
        print('requestId:', resp.requestId) 
    else: 
        print('Download File Failed') 
        print('requestId:', resp.requestId) 
        print('errorCode:', resp.errorCode) 
        print('errorMessage:', resp.errorMessage) 
except Exception: 
    print('Download File Failed') 
    print(traceback.format_exc())