全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
对象存储 OSS

管理存储空间

更新时间:2018-05-28 17:46:53

存储空间(Bucket)是对象(Object)的容器,对象必须隶属于某个存储空间。

以下场景的完整代码请参见 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. * 三种存储类型分别对应OssClient::OSS_STORAGE_STANDARD
  10. * OssClient::OSS_STORAGE_IA
  11. * OssClient::OSS_STORAGE_ARCHIVE
  12. * @param OssClient $ossClient OSSClient实例
  13. * @param string $bucket 要创建的Bucket名字
  14. * @return null
  15. */
  16. function createBucket($ossClient, $bucket)
  17. {
  18. try {
  19. $options = array(
  20. OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_STANDARD
  21. );
  22. //$options参数是可选的
  23. //Bucket名称是全局唯一的,所以您需要保证Bucket名称未被使用。
  24. $ossClient->createBucket($bucket, OssClient::OSS_ACL_TYPE_PRIVATE, $options);
  25. } catch (OssException $e) {
  26. printf(__FUNCTION__ . ": FAILED\n");
  27. printf($e->getMessage() . "\n");
  28. return;
  29. }
  30. print(__FUNCTION__ . ": OK" . "\n");
  31. }

关于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. }

删除存储空间

删除存储空间之前,必须先删除存储空间下的所有文件、分片上传产生的碎片、LiveChannel。

您可以使用$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):

权限 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. }

以上操作只有该存储空间的创建者有权限执行。

存储空间权限详情请参见 权限控制

获取存储空间的访问权限

您可以使用$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. }

获取存储空间所属地域

Region 表示 OSS 数据中心所在的地域,物理位置。您可以根据费用、请求来源等综合选择数据存储的 Region。一般来说,距离越近的 Region 访问速度越快。详情请参见 Region

您可以使用$ossClient->getBucketLocation获取存储空间的所属地域,代码如下:

  1. /**
  2. * 获取Bucket所属地域
  3. *
  4. * @param OssClient $ossClient OssClient实例
  5. * @param string $bucket 存储空间名称
  6. * @return null
  7. */
  8. function getBucketLocation($ossClient, $bucket)
  9. {
  10. try {
  11. $Regions = $ossClient->getBucketLocation($bucket);
  12. } catch (OssException $e) {
  13. printf(__FUNCTION__ . ": FAILED\n");
  14. printf($e->getMessage() . "\n");
  15. return;
  16. }
  17. print(__FUNCTION__ . ": OK" . "\n");
  18. var_dump($Regions);
  19. }

获取存储空间元信息

您可以使用$ossClient->getBucketMeta获取存储空间元信息(Meta),代码如下:

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