版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
详细解答可以参考官方帮助文档
存储空间(Bucket)是对象(Object)的容器,对象必须隶属于某个存储空间。
以下场景的完整代码请参见GitHub。
以下代码用于创建存储空间:
<?phpif (is_file(__DIR__ . '/../autoload.php')) {require_once __DIR__ . '/../autoload.php';}if (is_file(__DIR__ . '/../vendor/autoload.php')) {require_once __DIR__ . '/../vendor/autoload.php';}use OSS\OssClient;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";// 存储空间名称。$bucket= "<yourBucketName>";try {$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);// 设置存储空间的存储类型为低频访问类型,默认是标准类型。$options = array(OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_IA);// 设置存储空间的权限为公共读,默认是私有读写。$ossClient->createBucket($bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ, $options);} catch (OssException $e) {printf(__FUNCTION__ . ": FAILED\n");printf($e->getMessage() . "\n");return;}print(__FUNCTION__ . ": OK" . "\n");
存储空间的命名规范,请参见基本概念中的命名规范。
以下代码用于判断指定的存储空间是否存在:
<?phpif (is_file(__DIR__ . '/../autoload.php')) {require_once __DIR__ . '/../autoload.php';}if (is_file(__DIR__ . '/../vendor/autoload.php')) {require_once __DIR__ . '/../vendor/autoload.php';}use OSS\OssClient;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";// 存储空间名称。$bucket= "<yourBucketName>";try {$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);$res = $ossClient->doesBucketExist($bucket);} catch (OssException $e) {printf(__FUNCTION__ . ": FAILED\n");printf($e->getMessage() . "\n");return;}if ($res === true) {print(__FUNCTION__ . ": OK" . "\n");} else {print(__FUNCTION__ . ": FAILED" . "\n");}
以下代码用于列举存储空间:
<?phpif (is_file(__DIR__ . '/../autoload.php')) {require_once __DIR__ . '/../autoload.php';}if (is_file(__DIR__ . '/../vendor/autoload.php')) {require_once __DIR__ . '/../vendor/autoload.php';}use OSS\OssClient;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";try{$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);$bucketListInfo = $ossClient->listBuckets();} catch(OssException $e) {printf(__FUNCTION__ . ": FAILED\n");printf($e->getMessage() . "\n");return;}$bucketList = $bucketListInfo->getBucketList();foreach($bucketList as $bucket) {print($bucket->getLocation() . "\t" . $bucket->getName() . "\t" . $bucket->getCreatedate() . "\n");}
存储空间的访问权限(ACL)有以下三类:
| 访问权限 | 描述 | 访问权限值 |
|---|---|---|
| 私有 | 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户没有权限操作该存储空间内的文件。 | OssClient::OSS_ACL_TYPE_PRIVATE |
| 公共读 | 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户只有该存储空间内的文件的读权限。请谨慎使用该权限。 | OssClient::OSS_ACL_TYPE_PUBLIC_READ |
| 公共读写 | 所有用户都有该存储空间内的文件的读写权限。请谨慎使用该权限。 | OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE |
以下代码用于设置存储空间的访问权限:
<?phpif (is_file(__DIR__ . '/../autoload.php')) {require_once __DIR__ . '/../autoload.php';}if (is_file(__DIR__ . '/../vendor/autoload.php')) {require_once __DIR__ . '/../vendor/autoload.php';}use OSS\OssClient;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";// 存储空间名称。$bucket= "<yourBucketName>";// 设置存储空间的权限为私有。$acl = OssClient::OSS_ACL_TYPE_PRIVATE;try {$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);$ossClient->putBucketAcl($bucket, $acl);} catch (OssException $e) {printf(__FUNCTION__ . ": FAILED\n");printf($e->getMessage() . "\n");return;}print(__FUNCTION__ . ": OK" . "\n");
以下代码用于获取存储空间的访问权限:
<?phpif (is_file(__DIR__ . '/../autoload.php')) {require_once __DIR__ . '/../autoload.php';}if (is_file(__DIR__ . '/../vendor/autoload.php')) {require_once __DIR__ . '/../vendor/autoload.php';}use OSS\OssClient;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";// 存储空间名称。$bucket= "<yourBucketName>";try {$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);$res = $ossClient->getBucketAcl($bucket);} catch (OssException $e) {printf(__FUNCTION__ . ": FAILED\n");printf($e->getMessage() . "\n");return;}print(__FUNCTION__ . ": OK" . "\n");print('acl: ' . $res);
以下代码用于获取存储空间的地域(称为Region或Location):
<?phpif (is_file(__DIR__ . '/../autoload.php')) {require_once __DIR__ . '/../autoload.php';}if (is_file(__DIR__ . '/../vendor/autoload.php')) {require_once __DIR__ . '/../vendor/autoload.php';}use OSS\OssClient;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";// 存储空间名称。$bucket= "<yourBucketName>";try {$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);$Regions = $ossClient->getBucketLocation($bucket);} catch (OssException $e) {printf(__FUNCTION__ . ": FAILED\n");printf($e->getMessage() . "\n");return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($Regions);
关于地域的详细信息请参见基本概念中的地域。
以下代码用于获取存储空间元信息:
<?phpif (is_file(__DIR__ . '/../autoload.php')) {require_once __DIR__ . '/../autoload.php';}if (is_file(__DIR__ . '/../vendor/autoload.php')) {require_once __DIR__ . '/../vendor/autoload.php';}use OSS\OssClient;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";// 存储空间名称。$bucket= "<yourBucketName>";try {$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);$Metas = $ossClient->getBucketMeta($bucket);} catch (OssException $e) {printf(__FUNCTION__ . ": FAILED\n");printf($e->getMessage() . "\n");return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($Metas);
删除存储空间之前,必须先删除存储空间下的所有文件、LiveChannel和分片上传产生的碎片。
以下代码用于删除存储空间:
<?phpif (is_file(__DIR__ . '/../autoload.php')) {require_once __DIR__ . '/../autoload.php';}if (is_file(__DIR__ . '/../vendor/autoload.php')) {require_once __DIR__ . '/../vendor/autoload.php';}use OSS\OssClient;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";// 存储空间名称。$bucket= "<yourBucketName>";try{$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);$ossClient->deleteBucket($bucket);} catch(OssException $e) {printf(__FUNCTION__ . ": FAILED\n");printf($e->getMessage() . "\n");return;}print(__FUNCTION__ . ": OK" . "\n");