OBS客户端通用示例
开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。
调用ObsClient的相关接口均需要传入请求数组(associative array类型)作为输入。对于桶操作接口,请求数组中固定包含Bucket用于指定桶名(ObsClient->listBuckets除外);对于对象操作接口,请求数组中固定包含Bucket和Key分别用于指定桶名与对象名。OBS客户端提供同步调用和异步调用两种方式,具体示例如下:
同步调用方式
同步调用方式下如果抛出异常,表明操作失败;反之,则表明操作成功。示例代码如下:
// 引入依赖库 require 'vendor/autoload.php'; // 使用源码安装时引入SDK代码库 // require 'obs-autoloader.php'; // 声明命名空间 use Obs\ObsClient; // 创建ObsClient实例 $obsClient = new ObsClient([ //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html 'key' => getenv('ACCESS_KEY_ID'), 'secret' => getenv('SECRET_ACCESS_KEY'), 'endpoint' => 'https://your-endpoint', ]); // 构造桶操作请求参数 $requestParam1 = [ 'Bucket' => 'bucketname' // 其他字段 ]; try{ // 同步方式调用桶操作接口,如创建桶 $resp = $obsClient->createBucket ( $requestParam1 ); // 操作成功,处理桶操作调用结果 printf ( "RequestId:%s\n", $resp ['RequestId'] ); }catch (Obs\ObsException $obsException){ // 操作失败,获取详细异常信息 printf("ExceptionCode:%s\n", $obsException->getExceptionCode()); printf("ExceptionMessage:%s\n", $obsException->getExceptionMessage()); } // 构造对象操作请求参数 $requestParam2 = [ 'Bucket' => 'bucketname', 'Key' => 'objectname' // 其他字段 ]; try{ // 同步方式调用对象操作接口,如下载对象 $resp = $obsClient->getObject ( $requestParam2 ); // 操作成功,处理对象操作调用结果 printf ( "RequestId:%s\n", $resp ['RequestId'] ); }catch (Obs\ObsException $obsException){ // 操作失败,获取详细异常信息 printf("ExceptionCode:%s\n", $obsException->getExceptionCode()); printf("ExceptionMessage:%s\n", $obsException->getExceptionMessage()); } // 关闭obsClient $obsClient -> close();
异步调用方式
异步调用方式通过回调函数返回调用结果,如果回调函数中SDK自定义异常参数不为空,则表明操作失败;反之,则表明操作成功。示例代码如下:
// 引入依赖库 require 'vendor/autoload.php'; // 使用源码安装时引入SDK代码库 // require 'obs-autoloader.php'; // 声明命名空间 use Obs\ObsClient; // 创建ObsClient实例 $obsClient = new ObsClient([ //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html 'key' => getenv('ACCESS_KEY_ID'), 'secret' => getenv('SECRET_ACCESS_KEY'), 'endpoint' => 'https://your-endpoint', ]); // 构造桶操作请求参数 $requestParam1 = [ 'Bucket' => 'bucketname' // 其他字段 ]; // 异步方式调用桶操作接口,如创建桶 $promise1 = $obsClient->createBucketAsync ( $requestParam1 , function($obsException, $resp){ if($obsException !== null){ // 操作失败,获取详细异常信息 printf("ExceptionCode:%s\n", $obsException->getExceptionCode()); printf("ExceptionMessage:%s\n", $obsException->getExceptionMessage()); }else{ // 操作成功,处理桶操作调用结果 printf ( "RequestId:%s\n", $resp ['RequestId'] ); } }); // 等待桶操作接口调用结果 $promise1 -> wait(); // 构造对象操作请求参数 $requestParam2 = [ 'Bucket' => 'bucketname', 'Key' => 'objectname' // 其他字段 ]; // 异步方式调用对象操作接口,如下载对象 $promise2 = $obsClient->getObjectAsync ( $requestParam2 , function($obsException, $resp){ if($obsException !== null){ // 操作失败,获取详细异常信息 printf("ExceptionCode:%s\n", $obsException->getExceptionCode()); printf("ExceptionMessage:%s\n", $obsException->getExceptionMessage()); }else{ // 操作成功,处理对象操作调用结果 printf ( "RequestId:%s\n", $resp ['RequestId'] ); } }); // 等待对象操作接口调用结果 $promise2 -> wait(); // 关闭obsClient $obsClient -> close();