全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
对象存储 OSS

管理存储空间

更新时间:2017-06-07 13:26:11

Bucket是OSS上的存储空间,也是计费、权限控制、日志记录等高级功能的管理实体。

提示:

  • 以下场景的完整代码请参考: GitHub

新建存储空间

您可以使用OssClient::createBucket新建存储空间:

  1. <?php
  2. /**
  3. * 创建一存储空间
  4. * acl 指的是bucket的访问控制权限,有三种,私有读写,公共读私有写,公共读写。
  5. * 私有读写就是只有bucket的拥有者或授权用户才有权限操作
  6. * 三种权限分别对应OSSClient::OSS_ACL_TYPE_PRIVATE,
  7. * OssClient::OSS_ACL_TYPE_PUBLIC_READ,
  8. * OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE
  9. *
  10. * @param OssClient $ossClient OSSClient实例
  11. * @param string $bucket 要创建的bucket名字
  12. * @return null
  13. */
  14. function createBucket($ossClient, $bucket)
  15. {
  16. try {
  17. $ossClient->createBucket($bucket, OssClient::OSS_ACL_TYPE_PRIVATE);
  18. } catch (OssException $e) {
  19. printf(__FUNCTION__ . ": FAILED\n");
  20. printf($e->getMessage() . "\n");
  21. return;
  22. }
  23. print(__FUNCTION__ . ": OK" . "\n");
  24. }

提示:

  • Bucket的命名规范,参见基本概念中的 命名规范
  • Bucket的名字是全局唯一的,所以您需要保证Bucket名称不与别人重复。
  • Bucket权限更详细的解释,请查参看 权限控制

判断存储空间是否存在

您可以使用OssClient::doesBucketExist判断存储空间是否存在:

  1. /**
  2. * 判断Bucket是否存在
  3. *
  4. * @param OssClient $ossClient OssClient实例
  5. * @param string $bucket 存储空间名称
  6. */
  7. function doesBucketExist($ossClient, $bucket)
  8. {
  9. try {
  10. $res = $ossClient->doesBucketExist($bucket);
  11. } catch (OssException $e) {
  12. printf(__FUNCTION__ . ": FAILED\n");
  13. printf($e->getMessage() . "\n");
  14. return;
  15. }
  16. if ($res === true) {
  17. print(__FUNCTION__ . ": OK" . "\n");
  18. } else {
  19. print(__FUNCTION__ . ": FAILED" . "\n");
  20. }
  21. }

列出用户所有的存储空间

您可以使用OssClient::listBuckets列出用户所有的存储空间:

  1. <?php
  2. /**
  3. * 列出用户所有的Bucket
  4. *
  5. * @param OssClient $ossClient OssClient实例
  6. * @return null
  7. */
  8. function listBuckets($ossClient)
  9. {
  10. $bucketList = null;
  11. try{
  12. $bucketListInfo = $ossClient->listBuckets();
  13. } catch(OssException $e) {
  14. printf(__FUNCTION__ . ": FAILED\n");
  15. printf($e->getMessage() . "\n");
  16. return;
  17. }
  18. $bucketList = $bucketListInfo->getBucketList();
  19. foreach($bucketList as $bucket) {
  20. print($bucket->getLocation() . "\t" . $bucket->getName() . "\t" . $bucket->getCreatedate() . "\n");
  21. }
  22. }

删除存储空间

您可以使用OssClient::deleteBucket删除存储空间:

  1. <?php
  2. /**
  3. * 删除存储空间
  4. *
  5. * @param OssClient $ossClient OSSClient实例
  6. * @param string $bucket 待删除的存储空间名称
  7. * @return null
  8. */
  9. function deleteBucket($ossClient, $bucket)
  10. {
  11. try{
  12. $ossClient->deleteBucket($bucket);
  13. } catch(OssException $e) {
  14. printf(__FUNCTION__ . ": FAILED\n");
  15. printf($e->getMessage() . "\n");
  16. return;
  17. }
  18. print(__FUNCTION__ . ": OK" . "\n");
  19. }

提示:

  • 如果存储空间不为空(存储空间中有文件或者分片上传的分片),则存储空间无法删除;
  • 必须先删除存储空间中的所有文件和分片后,存储空间才能成功删除。

设置存储空间访问权限(ACL)

除了在创建存储空间的时候能够对存储空间的 ACL 进行设置,也可以根据自己的业务需求对存储空间的ACL进行修改。这个操作只有该存储空间的创建者有权限执行。关于存储空间权限更详细的解释,请参看 权限控制

存储空间有三种访问权限:

权限 PHP SDK对应值
私有读写 OssClient::OSS_ACL_TYPE_PRIVATE
公共读私有写 OssClient::OSS_ACL_TYPE_PUBLIC_READ
公共读写 OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE

您可以使用OssClient::putBucketAcl设置存储空间的访问权限:

  1. <?php
  2. /**
  3. * 设置bucket的acl配置
  4. *
  5. * @param OssClient $ossClient OssClient实例
  6. * @param string $bucket 存储空间名称
  7. * @return null
  8. */
  9. function putBucketAcl($ossClient, $bucket)
  10. {
  11. $acl = OssClient::OSS_ACL_TYPE_PRIVATE;
  12. try {
  13. $ossClient->putBucketAcl($bucket, $acl);
  14. } catch (OssException $e) {
  15. printf(__FUNCTION__ . ": FAILED\n");
  16. printf($e->getMessage() . "\n");
  17. return;
  18. }
  19. print(__FUNCTION__ . ": OK" . "\n");
  20. }

获取存储空间访问权限(ACL)

您可以使用OssClient::getBucketAcl获取存储空间的访问权限:

  1. <?php
  2. /**
  3. * 获取bucket的acl配置
  4. *
  5. * @param OssClient $ossClient OssClient实例
  6. * @param string $bucket 存储空间名称
  7. * @return null
  8. */
  9. function getBucketAcl($ossClient, $bucket)
  10. {
  11. try {
  12. $res = $ossClient->getBucketAcl($bucket);
  13. } catch (OssException $e) {
  14. printf(__FUNCTION__ . ": FAILED\n");
  15. printf($e->getMessage() . "\n");
  16. return;
  17. }
  18. print(__FUNCTION__ . ": OK" . "\n");
  19. print('acl: ' . $res);
  20. }
本文导读目录