开发者社区> 问答> 正文

Java-SDK 之如何实现管理文件(一)?

在OSS中,用户可以通过一系列的接口管理存储空间(Bucket)中的文件(Object),比如SetObjectAcl,GetObjectAcl,ListObjects,DeleteObject,CopyObject,DoesObjectExist等。Object的名字又称为key或object key。

Object是否存在


通过OSSClient.doesObjectExist判断文件(object)是否存在。

  1. // endpoint以杭州为例,其它region请按实际情况填写
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // 创建OSSClient实例
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. // Object是否存在
  9. boolean found = ossClient.doesObjectExist("<bucketName>", "<key>")
  10. // 关闭client
  11. ossClient.shutdown();


Object ACL


Object有四种访问权限:Default(默认),Private(私有读写), PublicRead(公共读私有写), PublicReadWrite(公共读写),含义如下:
权限描述
默认Objec是遵循Bucket的读写权限,即Bucket是什么权限,Object就是什么权限,Object的默认权限
私有读写Object是私有资源,即只有该Object的Owner拥有该Object的读写权限,其他的用户没有权限操作该Object
公共读私有写Object是公共读资源,即非Object Owner只有Object的读权限,而Object Owner拥有该Object的读写权限
公共读写Object是公共读写资源,即所有用户拥有对该Object的读写权限

Object的权限优先级高于Bucket。例如Bucket是private的,而Object ACL是公共读写,则访问这个Object时,先判断Object的ACL,所有用户都拥有这个Object的访问权限,即使这个Bucket是private。如果某个Object从来没设置过ACL,则访问权限遵循Bucket ACL。

设置Object ACL


您可以通过OSSClient.setObjectAcl设置Object的权限。
权限Java SDK对应值
私有读写CannedAccessControlList.Private
公共读私有写CannedAccessControlList.PublicRead
公共读写CannedAccessControlList.PublicReadWrite

下面代码为Object设置ACL:
  1. // endpoint以杭州为例,其它region请按实际情况填写
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // 创建OSSClient实例
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. // 设置Object权限
  9. ossClient.setObjectAcl("<bucketName>", "<key>", CannedAccessControlList.PublicRead)
  10. // 关闭client
  11. ossClient.shutdown();


获取Object ACL


您可以通过OSSClient.getObjectAcl获取Object的权限。
  1. // endpoint以杭州为例,其它region请按实际情况填写
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // 创建OSSClient实例
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. //读取Object ACL
  9. ObjectAcl objectAcl = ossClient.getObjectAcl("<bucketName>", "<key>");
  10. System.out.println(objectAcl.getPermission().toString());
  11. // 关闭client
  12. ossClient.shutdown();






展开
收起
青衫无名 2017-10-18 10:56:20 1982 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载