开发者社区> 问答> 正文

php代码删除Bucket

已解决

展开
收起
2018-05-03 11:49:45 675 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    详细解答可以参考官方帮助文档

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

    以下场景的完整代码请参见GitHub

    创建存储空间

    以下代码用于创建存储空间:

    1. <?php
    2. if (is_file(__DIR__ . '/../autoload.php')) {
    3. require_once __DIR__ . '/../autoload.php';
    4. }
    5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    6. require_once __DIR__ . '/../vendor/autoload.php';
    7. }
    8. use OSS\OssClient;
    9. use OSS\Core\OssException;
    10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
    11. $accessKeyId = "<yourAccessKeyId>";
    12. $accessKeySecret = "<yourAccessKeySecret>";
    13. // Endpoint以杭州为例,其它Region请按实际情况填写。
    14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
    15. // 存储空间名称。
    16. $bucket= "<yourBucketName>";
    17. try {
    18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    19. // 设置存储空间的存储类型为低频访问类型,默认是标准类型。
    20. $options = array(
    21. OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_IA
    22. );
    23. // 设置存储空间的权限为公共读,默认是私有读写。
    24. $ossClient->createBucket($bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ, $options);
    25. } catch (OssException $e) {
    26. printf(__FUNCTION__ . ": FAILED\n");
    27. printf($e->getMessage() . "\n");
    28. return;
    29. }
    30. print(__FUNCTION__ . ": OK" . "\n");

    存储空间的命名规范,请参见基本概念中的命名规范。

    判断存储空间是否存在

    以下代码用于判断指定的存储空间是否存在:

    1. <?php
    2. if (is_file(__DIR__ . '/../autoload.php')) {
    3. require_once __DIR__ . '/../autoload.php';
    4. }
    5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    6. require_once __DIR__ . '/../vendor/autoload.php';
    7. }
    8. use OSS\OssClient;
    9. use OSS\Core\OssException;
    10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
    11. $accessKeyId = "<yourAccessKeyId>";
    12. $accessKeySecret = "<yourAccessKeySecret>";
    13. // Endpoint以杭州为例,其它Region请按实际情况填写。
    14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
    15. // 存储空间名称。
    16. $bucket= "<yourBucketName>";
    17. try {
    18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    19. $res = $ossClient->doesBucketExist($bucket);
    20. } catch (OssException $e) {
    21. printf(__FUNCTION__ . ": FAILED\n");
    22. printf($e->getMessage() . "\n");
    23. return;
    24. }
    25. if ($res === true) {
    26. print(__FUNCTION__ . ": OK" . "\n");
    27. } else {
    28. print(__FUNCTION__ . ": FAILED" . "\n");
    29. }

    列举存储空间

    以下代码用于列举存储空间:

    1. <?php
    2. if (is_file(__DIR__ . '/../autoload.php')) {
    3. require_once __DIR__ . '/../autoload.php';
    4. }
    5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    6. require_once __DIR__ . '/../vendor/autoload.php';
    7. }
    8. use OSS\OssClient;
    9. use OSS\Core\OssException;
    10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
    11. $accessKeyId = "<yourAccessKeyId>";
    12. $accessKeySecret = "<yourAccessKeySecret>";
    13. // Endpoint以杭州为例,其它Region请按实际情况填写。
    14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
    15. try{
    16. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    17. $bucketListInfo = $ossClient->listBuckets();
    18. } catch(OssException $e) {
    19. printf(__FUNCTION__ . ": FAILED\n");
    20. printf($e->getMessage() . "\n");
    21. return;
    22. }
    23. $bucketList = $bucketListInfo->getBucketList();
    24. foreach($bucketList as $bucket) {
    25. print($bucket->getLocation() . "\t" . $bucket->getName() . "\t" . $bucket->getCreatedate() . "\n");
    26. }

    设置存储空间的访问权限

    存储空间的访问权限(ACL)有以下三类:

    访问权限 描述 访问权限值
    私有 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户没有权限操作该存储空间内的文件。 OssClient::OSS_ACL_TYPE_PRIVATE
    公共读 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户只有该存储空间内的文件的读权限。请谨慎使用该权限。 OssClient::OSS_ACL_TYPE_PUBLIC_READ
    公共读写 所有用户都有该存储空间内的文件的读写权限。请谨慎使用该权限。 OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE

    以下代码用于设置存储空间的访问权限:

    1. <?php
    2. if (is_file(__DIR__ . '/../autoload.php')) {
    3. require_once __DIR__ . '/../autoload.php';
    4. }
    5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    6. require_once __DIR__ . '/../vendor/autoload.php';
    7. }
    8. use OSS\OssClient;
    9. use OSS\Core\OssException;
    10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
    11. $accessKeyId = "<yourAccessKeyId>";
    12. $accessKeySecret = "<yourAccessKeySecret>";
    13. // Endpoint以杭州为例,其它Region请按实际情况填写。
    14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
    15. // 存储空间名称。
    16. $bucket= "<yourBucketName>";
    17. // 设置存储空间的权限为私有。
    18. $acl = OssClient::OSS_ACL_TYPE_PRIVATE;
    19. try {
    20. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    21. $ossClient->putBucketAcl($bucket, $acl);
    22. } catch (OssException $e) {
    23. printf(__FUNCTION__ . ": FAILED\n");
    24. printf($e->getMessage() . "\n");
    25. return;
    26. }
    27. print(__FUNCTION__ . ": OK" . "\n");

    获取存储空间的访问权限

    以下代码用于获取存储空间的访问权限:

    1. <?php
    2. if (is_file(__DIR__ . '/../autoload.php')) {
    3. require_once __DIR__ . '/../autoload.php';
    4. }
    5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    6. require_once __DIR__ . '/../vendor/autoload.php';
    7. }
    8. use OSS\OssClient;
    9. use OSS\Core\OssException;
    10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
    11. $accessKeyId = "<yourAccessKeyId>";
    12. $accessKeySecret = "<yourAccessKeySecret>";
    13. // Endpoint以杭州为例,其它Region请按实际情况填写。
    14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
    15. // 存储空间名称。
    16. $bucket= "<yourBucketName>";
    17. try {
    18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    19. $res = $ossClient->getBucketAcl($bucket);
    20. } catch (OssException $e) {
    21. printf(__FUNCTION__ . ": FAILED\n");
    22. printf($e->getMessage() . "\n");
    23. return;
    24. }
    25. print(__FUNCTION__ . ": OK" . "\n");
    26. print('acl: ' . $res);

    获取存储空间的地域

    以下代码用于获取存储空间的地域(称为Region或Location):

    1. <?php
    2. if (is_file(__DIR__ . '/../autoload.php')) {
    3. require_once __DIR__ . '/../autoload.php';
    4. }
    5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    6. require_once __DIR__ . '/../vendor/autoload.php';
    7. }
    8. use OSS\OssClient;
    9. use OSS\Core\OssException;
    10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
    11. $accessKeyId = "<yourAccessKeyId>";
    12. $accessKeySecret = "<yourAccessKeySecret>";
    13. // Endpoint以杭州为例,其它Region请按实际情况填写。
    14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
    15. // 存储空间名称。
    16. $bucket= "<yourBucketName>";
    17. try {
    18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    19. $Regions = $ossClient->getBucketLocation($bucket);
    20. } catch (OssException $e) {
    21. printf(__FUNCTION__ . ": FAILED\n");
    22. printf($e->getMessage() . "\n");
    23. return;
    24. }
    25. print(__FUNCTION__ . ": OK" . "\n");
    26. var_dump($Regions);

    关于地域的详细信息请参见基本概念中的地域。

    获取存储空间元信息

    以下代码用于获取存储空间元信息:

    1. <?php
    2. if (is_file(__DIR__ . '/../autoload.php')) {
    3. require_once __DIR__ . '/../autoload.php';
    4. }
    5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    6. require_once __DIR__ . '/../vendor/autoload.php';
    7. }
    8. use OSS\OssClient;
    9. use OSS\Core\OssException;
    10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
    11. $accessKeyId = "<yourAccessKeyId>";
    12. $accessKeySecret = "<yourAccessKeySecret>";
    13. // Endpoint以杭州为例,其它Region请按实际情况填写。
    14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
    15. // 存储空间名称。
    16. $bucket= "<yourBucketName>";
    17. try {
    18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    19. $Metas = $ossClient->getBucketMeta($bucket);
    20. } catch (OssException $e) {
    21. printf(__FUNCTION__ . ": FAILED\n");
    22. printf($e->getMessage() . "\n");
    23. return;
    24. }
    25. print(__FUNCTION__ . ": OK" . "\n");
    26. var_dump($Metas);

    删除存储空间

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

    以下代码用于删除存储空间:

    1. <?php
    2. if (is_file(__DIR__ . '/../autoload.php')) {
    3. require_once __DIR__ . '/../autoload.php';
    4. }
    5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    6. require_once __DIR__ . '/../vendor/autoload.php';
    7. }
    8. use OSS\OssClient;
    9. use OSS\Core\OssException;
    10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
    11. $accessKeyId = "<yourAccessKeyId>";
    12. $accessKeySecret = "<yourAccessKeySecret>";
    13. // Endpoint以杭州为例,其它Region请按实际情况填写。
    14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
    15. // 存储空间名称。
    16. $bucket= "<yourBucketName>";
    17. try{
    18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    19. $ossClient->deleteBucket($bucket);
    20. } catch(OssException $e) {
    21. printf(__FUNCTION__ . ": FAILED\n");
    22. printf($e->getMessage() . "\n");
    23. return;
    24. }
    25. print(__FUNCTION__ . ": OK" . "\n");
    2018-05-04 13:08:11
    赞同 展开评论 打赏
问答分类:
PHP
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载