173 lines
5.9 KiB
PHP
Executable File
173 lines
5.9 KiB
PHP
Executable File
<?php
|
|
|
|
# @Author: 嗨噜客(三亚) <fm453>
|
|
# @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 = '<CORSConfiguration><CORSRule><AllowedMethod>PUT</AllowedMethod><AllowedOrigin>'.$host.'</AllowedOrigin><AllowedHeader>header1</AllowedHeader><MaxAgeSeconds>100</MaxAgeSeconds><ExposeHeader>header2</ExposeHeader></CORSRule></CORSConfiguration>';
|
|
$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']);
|
|
}
|
|
}
|