oss 上传文件返回值的url,怎么返回自定义域名的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是
http://test.baidu.com/2023-11-17/demo.doc?Expires=1700235813&OSSAccessKeyId=STS.NUaRPK6v5wwiBj1GuyNRGbCL1&Signature=QZ0.......
建议官方在绑定二级自定义域名时候就应该把签名的明确指定二级域名说下,费了半下午时间才搞定。
赞1
踩0