# @Date: 2022-05-19T08:30:15+08:00 # @Email: fm453@lukegzs.com # @Last modified by: fm453 # @Last modified time: 2022-05-21T00:23:46+08:00 # @Copyright: www.hiluker.cn namespace vendor\huawei\obsclient; // 引入依赖库 require('vendor/autoload.php'); require('obs-autoloader.php'); use Obs\ObsClient; use Obs\ObsException; use GuzzleHttp\Exception\ClientException; //生成带授权信息的URL,默认有效期300s class TemporarySignature extends Common { public function init() { $obsClient = new ObsClient([ 'key' => $this->ak, 'secret' => $this->sk, 'endpoint' => $this->endpoint, ]); $obsClient->initLog([ 'FilePath' => './logs', 'FileName' => 'eSDK-OBS-PHP.log', 'MaxFiles' => 10, 'Level' => WARN ]); $this->obsClient = $obsClient; } public function createBucket($bucketName) { $obsClient = $this->obsClient; /* * Create bucket */ $method = 'PUT'; $res = $obsClient -> createSignedUrl(['Bucket' => $bucketName, 'Method' => $method]); doAction('Create bucket', $method, $res['SignedUrl']); } public function setCors($host, $bucketName) { $obsClient = $this->obsClient; /* * Set/Get/Delete bucket cors */ $method = 'PUT'; $content = 'PUT'.$host.'header1100header2'; $headers = ['Content-Length'=> strval(strlen($content)), 'Content-MD5' => base64_encode(md5($content, true))]; $res = $obsClient -> createSignedUrl(['Bucket' => $bucketName, 'Method' => $method, 'SpecialParam' => 'cors', 'Headers' => $headers]); doAction('Set bucket cors ', $method, $res['SignedUrl'], $content, $res['ActualSignedRequestHeaders']); } public function getCors($bucketName) { $obsClient = $this->obsClient; /* * Set/Get/Delete bucket cors */ $method = 'GET'; $res= $obsClient -> createSignedUrl(['Bucket' => $bucketName, 'Method' => $method, 'SpecialParam' => 'cors']); return $res['SignedUrl']; $this->doAction('Get bucket cors ', $method, $res['SignedUrl']); } public function deleteCors($bucketName) { $obsClient = $this->obsClient; /* * Set/Get/Delete bucket cors */ $method = 'DELETE'; $res= $obsClient -> createSignedUrl(['Bucket' => $bucketName, 'Method' => $method, 'SpecialParam' => 'cors']); doAction('Delete bucket cors ', $method, $res['SignedUrl']); } public function createObject($content, $bucketName) { $obsClient = $this->obsClient; /* * Create object */ $method = 'PUT'; $headers = ['Content-Length'=> strval(strlen($content))]; $res = $obsClient -> createSignedUrl(['Method' => $method, 'Bucket' => $bucketName, 'Key' => $objectKey, 'Headers'=> $headers]); doAction('Create object', $method, $res['SignedUrl'], $content, $res['ActualSignedRequestHeaders']); } public function getObject($content, $bucketName) { $obsClient = $this->obsClient; /* * Get object */ $method = 'GET'; $res = $obsClient -> createSignedUrl(['Method' => $method, 'Bucket' => $bucketName, 'Key' => $objectKey]); doAction('Get object', $method, $res['SignedUrl']); } public function setObjectAcl($content, $bucketName) { $obsClient = $this->obsClient; /* * Set/Get object acl */ $method = 'PUT'; $headers = ['x-amz-acl'=> ObsClient::AclPublicRead]; $res = $obsClient -> createSignedUrl(['Method' => $method, 'Bucket' => $bucketName, 'Key' => $objectKey, 'Headers'=> $headers, 'SpecialParam' => 'acl']); doAction('Set object Acl', $method, $res['SignedUrl'], null, $res['ActualSignedRequestHeaders']); } public function getObjectAcl($content, $bucketName) { $obsClient = $this->obsClient; /* * Set/Get object acl */ $method = 'GET'; $res = $obsClient -> createSignedUrl(['Method' => $method, 'Bucket' => $bucketName, 'Key' => $objectKey, 'SpecialParam' => 'acl']); doAction('Get object Acl', $method, $res['SignedUrl']); } public function deletedObject($bucketName) { $obsClient = $this->obsClient; /* * Delete object */ $method = 'DELETE'; $res = $obsClient -> createSignedUrl(['Method' => $method, 'Bucket' => $bucketName, 'Key' => $objectKey]); doAction('Delete object', $method, $res['SignedUrl']); } public function deletedBucket($bucketName) { $obsClient = $this->obsClient; /* * Delete bucket */ $method = 'DELETE'; $res = $obsClient -> createSignedUrl(['Bucket' => $bucketName, 'Method' => $method]); doAction('Delete bucket', $method, $res['SignedUrl']); } public function UploadUrl($bucketName) { $obsClient = $this->obsClient; /* * 获取文件上传签名URL */ $method = 'PUT'; $expires = 3600; //有效期3600秒; $objectname = 'file'; // $header = ['content-type' => 'text/plain']; $header = ['content-type' => 'multipart/form-data']; $res = $obsClient -> createSignedUrl(['Bucket' => $bucketName, 'Method' => $method,'Key'=>$objectname,'Expires'=>$expires]); return [ 'url'=>$res['SignedUrl'], 'header'=>$res['ActualSignedRequestHeaders'] ]; // $this->doAction('get upload url', $method, $res['SignedUrl']); } }