1.已经在后台设置了自定义域名,与bucket-name也已经绑定了。
2.我使用oss上传文件,返回值中的url是以bucket-name开头的。
问:
怎么设置返回为自定义域名的url?
这个问题确实很奇葩,官网文档居然没有特意提醒一下,在一个隐蔽的角落找到了,如果定义了二级域名,需要明确指定一下才行,找到官网地址:https://help.aliyun.com/zh/oss/developer-reference/initialization-3
也可以参考我这边的代码片段
// 创建ClientBuilderConfiguration实例,您可以根据实际情况修改默认参数。
ClientBuilderConfiguration configuration = new ClientBuilderConfiguration();
// 设置是否支持CNAME。CNAME用于将自定义域名绑定到目标Bucket。
configuration.setSupportCname(true);
// 创建OSSClient实例
OSS ossClient = new OSSClientBuilder().build(ENDPOINT_DOMAIN, accessKeyId, accessKeySecret, securityToken,configuration);
// 生成带签名的URL
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(BUCKET_NAME, objectName, HttpMethod.GET);
// 设置URL过期时间为1小时
Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);
request.setExpiration(expiration);
URL url = ossClient.generatePresignedUrl(request);
System.out.println(url);
注意,我这里是通过STS获取到临时url
private static final String BUCKET_NAME = "your-bucket";
private static final String ENDPOINT_DOMAIN = "test.baidu.com";
这样才能返回一个url是
建议官方在绑定二级自定义域名时候就应该把签名的明确指定二级域名说下,费了半下午时间才搞定。
很简单
在声明new OssClient类时,修改第三个和第四个参数即可
如下声明即可 new OssClient(key_id,key_secret,自有域名,true)
注意:第三个参数必须修改为你的自有域名 例如:oss.bd.com 第四个参数意为 是否使用自有域名
这样,上传成功后就会返回自有域名的文件链接了。
$accessKeyId = " "; $accessKeySecret = " "; $endpoint = " ";
try { // true为开启CNAME。CNAME是指将自定义域名绑定到存储空间上。 $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, true); } catch (OssException $e) { print $e->getMessage(); }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。