在OSS中,用户可以通过一系列的接口管理存储空间(Bucket)中的文件(Object),比如SetObjectAcl,GetObjectAcl,ListObjects,DeleteObject,CopyObject,DoesObjectExist等。Object的名字又称为key或object key。
Object是否存在
通过OSSClient.doesObjectExist判断文件(object)是否存在。
- // endpoint以杭州为例,其它region请按实际情况填写
- String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
- // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
- String accessKeyId = "<yourAccessKeyId>";
- String accessKeySecret = "<yourAccessKeySecret>";
- // 创建OSSClient实例
- OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
- // Object是否存在
- boolean found = ossClient.doesObjectExist("<bucketName>", "<key>")
- // 关闭client
- ossClient.shutdown();
Object ACL
Object有四种访问权限:Default(默认),Private(私有读写), PublicRead(公共读私有写), PublicReadWrite(公共读写),含义如下:
Object的权限优先级高于Bucket。例如Bucket是private的,而Object ACL是公共读写,则访问这个Object时,先判断Object的ACL,所有用户都拥有这个Object的访问权限,即使这个Bucket是private。如果某个Object从来没设置过ACL,则访问权限遵循Bucket ACL。
设置Object ACL
您可以通过OSSClient.setObjectAcl设置Object的权限。
下面代码为Object设置ACL:
- // endpoint以杭州为例,其它region请按实际情况填写
- String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
- // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
- String accessKeyId = "<yourAccessKeyId>";
- String accessKeySecret = "<yourAccessKeySecret>";
- // 创建OSSClient实例
- OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
- // 设置Object权限
- ossClient.setObjectAcl("<bucketName>", "<key>", CannedAccessControlList.PublicRead)
- // 关闭client
- ossClient.shutdown();
获取Object ACL
您可以通过OSSClient.getObjectAcl获取Object的权限。
- // endpoint以杭州为例,其它region请按实际情况填写
- String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
- // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
- String accessKeyId = "<yourAccessKeyId>";
- String accessKeySecret = "<yourAccessKeySecret>";
- // 创建OSSClient实例
- OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
- //读取Object ACL
- ObjectAcl objectAcl = ossClient.getObjectAcl("<bucketName>", "<key>");
- System.out.println(objectAcl.getPermission().toString());
- // 关闭client
- ossClient.shutdown();