获取文件下载URL
更新时间:2025-02-08
用户可以通过如下代码获取指定Object的URL:
Java
1public String generatePresignedUrl(BosClient client, String bucketName, String objectKey, int expirationInSeconds) {
2
3 //指定用户需要获取的Object所在的Bucket名称、该Object名称、URL的有效时长
4 URL url = client.generatePresignedUrl(<bucketName>, <objectKey>, <expirationInSeconds>);
5
6
7 return url.toString();
8}
说明:
- 用户在调用该函数前,需要手动设置endpoint为所属区域域名。百度智能云目前开放了多区域 支持,请参考Region与Endpoint。
expirationInSeconds
为指定的URL有效时长,时间从当前时间算起,为可选参数,不配置时系统默认值为1800秒。如果要设置为永久不失效的时间,可以将expirationInSeconds
参数设置为 -1,不可设置为其他负数。- 如果预期获取的文件时公共可读的,则对应URL链接可通过简单规则快速拼接获取:
http://$bucketName.$region.bcebos.com/$objectKey
或者http://$region.bcebos.com/$bucketName/$objectKey
支持通过STS方式获取下载URL,配置STS访问BOS见初始化页面,代码示例如下:
Java
1public String generatePresignedUrl(String bucketName, String objectKey, int expirationInSeconds) {
2 // 获取STS
3 BceCredentials credentials = new DefaultBceCredentials(BOS_AK, BOS_SK);
4 StsClient stsClient = new StsClient(
5 new BceClientConfiguration().withEndpoint("http://sts.bj.baidubce.com").withCredentials(credentials)
6 );
7 GetSessionTokenResponse response = stsClient.getSessionToken(new GetSessionTokenRequest());
8
9 // 生成bosClient
10 BceCredentials bosstsCredentials = new DefaultBceSessionCredentials(
11 response.getAccessKeyId(),
12 response.getSecretAccessKey(),
13 response.getSessionToken());
14 BosClientConfiguration config = new BosClientConfiguration();
15 config.setCredentials(bosstsCredentials);
16 config.setEndpoint(ENDPOINT);
17 BosClient bosClient = new BosClient(config);
18
19 // 指定用户需要获取的Object所在的Bucket名称、该Object名称、URL的有效时长
20 URL url = bosClient.generatePresignedUrl(bucketName, objectKey, expirationInSeconds);
21
22 return url.toString();
23}