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