授权访问
更新时间: 2020-03-24
目录
储存在桶内的文件可以通过签名URL实现访客临时访问。生成签名URL时,您可以通过指定URL的过期时间来限制访客的访问时长。
在URL中加入签名信息,以便将该URL转给第三方实现授权访问。
授权url默认过期时间
以下代码用于获取默认时长的带签名下载链接:
// Endpoint以华北三为例,其它Region请按实际情况填写。
String endpoint = "oss.cn-north-3.inspurcloudoss.com";
String accessKey = "<yourAccessKey>";
String secretKey = "<yourSecretKey>";
String bucketName = "<yourBucketName>";
String key = "<yourObjectName>";
// 创建OSSClient实例
OSSClientImpl ossClient = new OSSClientImpl(endpoint, accessKey, secretKey);
// 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容
// 不设置签名过期时间
String url = ossClient.generatePresignedUrl(bucketName, key);
System.out.println("PresignedUrl: " + url);
授权url指定过期时间
参数expiration表示链接的有效时间,以下代码用于获取指定有效时间的带签名下载链接:
// Endpoint以华北三为例,其它Region请按实际情况填写。
String endpoint = "oss.cn-north-3.inspurcloudoss.com";
String accessKey = "<yourAccessKey>";
String secretKey = "<yourSecretKey>";
String bucketName = "<yourBucketName>";
String key = "<yourObjectName>";
// 设置带签名下载链接过期的时间点(Date类型)
//private static Date expiration1 = new Date();
// expiration是时间戳,使用时间戳设置带签名下载链接过期的时间
private static Long expiration = 1578040670L;
// 创建OSSClient实例
OSSClientImpl ossClient = new OSSClientImpl(endpoint, accessKey, secretKey);
// 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容
String url = ossClient.generatePresignedUrl(bucketName, key, expiration);
System.out.println("PresignedUrl: " + url);
授权以其他HTTP方法访问的签名URL
如果您要授权其他用户临时执行其他操作(例如上传、删除文件等),需要生成对应的签名URL,例如生成以PUT方法访问的签名URL来上传文件。 以下代码用于生成以其他HTTP方法访问的签名URL。
// Endpoint以华北三为例,其它Region请按实际情况填写。
String endpoint = "oss.cn-north-3.inspurcloudoss.com";
String accessKey = "<yourAccessKey>";
String secretKey = "<yourSecretKey>";
String bucketName = "<yourBucketName>";
String key = "<yourObjectName>";
// 创建OSSClient实例
OSSClientImpl ossClient = new OSSClientImpl(endpoint, accessKey, secretKey);
// expiration是时间戳,使用时间戳设置带签名上传链接过期的时间
Long expiration = 1578040670L;
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, key, expiration);
// 设置HttpMethod为PUT。
request.setHttpMethod(HttpMethod.PUT);
// 设置请求头。
request.addRequestHeader("Content-Type", "application/octet-stream");
// 设置参数
Map<String, String> parameters = new HashMap<>();
parameters.put("uploadId", "uploadId");
parameters.put("partNumber", "partNumber");
request.setParameters(parameters);
String signedUrl = ossClient.generatePresignedUrl(request);
System.out.println("Generating PresignedUrl result: " + signedUrl);