获取文件下载URL
所有文档
menu

对象存储 BOS

获取文件下载URL

产品详情自助选购

用户可以通过如下代码获取指定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为所属区域域名。百度智能云目前开放了多区域 支持,请参考Region与Endpoint
  • 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();
}
上一篇
变更文件存储等级
下一篇
列举存储空间中的文件