获取预签名文件URL
更新时间:2025-10-30
用户可以通过如下示例代码获取指定Object的URL:
                Plain Text
                
            
            1url = bos_client.generate_pre_signed_url(bucket_name, object_key, timestamp, expiration_in_seconds, headers, params, headers_to_sign, protocol, config, httpmethod)说明:
- 用户在调用该函数前,需要手动设置
endpoint为所属区域域名。百度智能云目前开放了多区域支持,请参考区域选择说明。目前支持“华北-北京”、“华南-广州”和“华东-苏州”三个区域。北京区域:http://bj.bcebos.com,广州区域:http://gz.bcebos.com,苏州区域:http://su.bcebos.com。
timestamp为可选参数,不配置时,默认值为当前时间。timestamp为时间戳,标识URL有效起始时间,timestamp=int(time.time()),并需要* import time。
expriation_in_seconds用来设置URL的有效时长,为可选参数,不配置时,默认值为1800秒。如果要设置为永久不失效的时间,可以将expirationInSeconds参数设置为 -1,不可设置为其他负数。
params请求的query 参数,传递后会参与计算签名
headers_to_sign请求的header 参数,传递后会参与计算签名
protocolhttp协议,支持传参http或https
httpmethodhttp method,支持传参PUT,GET,HEAD,DELETE等
常用上传/下载文件预签名URL代码示例
                Python
                
            
            1import bos_sample_conf
2from baidubce.http import http_methods
3import requests
4
5bucket_name = "test bucket"
6key = "object key"
7content = b'test pre_signed_url get_object'
8
9# 下载文件示例
10# 根据配置创建BosClient对象, 具体配置解释详见初始化文档解释
11bos_client = BosClient(bos_sample_conf.config)
12# 生成下载文件签名url, 有效时间为1800s
13url = bos_client.generate_pre_signed_url(bucket_name, key, expiration_in_seconds=1800)
14print('get object url is ', url)
15
16# 使用签名url下载对象的文件流, 以requests库发起http请求的方式举例
17out = requests.get(url)
18
19# 上传文件示例
20# 根据配置创建BosClient对象, 具体配置解释详见初始化文档解释
21bos_client = BosClient(bos_sample_conf.config)
22# 生成下载文件签名url, 有效时间为1800s
23url = bos_client.generate_pre_signed_url(bucket_name, key, expiration_in_seconds=1800, httpmethod=http_methods.PUT)
24print('put object url is ', url)
25# 使用签名url上传对象, 以requests库发起http请求的方式举例
26out = requests.put(url, content)
27
28# 删除文件示例
29# 根据配置创建BosClient对象, 具体配置解释详见初始化文档解释
30bos_client = BosClient(bos_sample_conf.config)
31# 生成下载文件签名url, 有效时间为1800s
32url = bos_client.generate_pre_signed_url(bucket_name, key, expiration_in_seconds=1800, httpmethod=http_methods.DELETE)
33print('delete object url is ', url)
34# 使用签名url上传对象, 以requests库发起http请求的方式举例
35out = requests.delete(url)生成STS预签名示例
现已支持通过STS方式获取,配置STS访问BOS见初始化页面,代码示例如下:
                Python
                
            
            1# 引入STS配置文件
2import sts_sample
3import time
4
5# create a sts bos client
6sts_bos_client = BosClient(sts_sample.config)
7timestamp =int(time.time())
8url = sts_bos_client.generate_pre_signed_url(bucket_name, key, timestamp,
9                                               expiration_in_seconds=3600)视频截帧等增加参数配置类预签名URL示例
                Python
                
            
            1import bos_sample_conf
2
3bucket_name = "test bucket"
4key = "object key"
5
6# 根据配置创建BosClient对象, 具体配置解释详见初始化文档解释
7bos_client = BosClient(bos_sample_conf.config)
8# 增加图片预处理等参数,示例为使用关键帧模式截取视频2s处的内容,输出为PNG格式的图片,宽度为800,高度为600,且旋转角度为90度
9params = {
10        "x-bce-process" : "video/snapshot,t_2000,f_png,w_800,h_600,ar_90,m_fast"
11    }
12# 生成下载文件签名url, 有效时间为1800s
13url = bos_client.generate_pre_signed_url(bucket_name, key, expiration_in_seconds=1800, params=params)
14print('get object url is ', url)