From 9ca1c1e310f4c3d2e6520b1f7868ab282a90d22c Mon Sep 17 00:00:00 2001 From: lewzylu <327874225@qq.com> Date: Fri, 8 Dec 2017 10:48:49 +0800 Subject: [PATCH 1/4] fix appid --- README.md | 30 +++++++------- sample.php | 54 ++++++++++++-------------- src/Qcloud/Cos/BucketStyleListener.php | 6 +-- src/Qcloud/Cos/Client.php | 2 +- src/Qcloud/Cos/Tests/BucketTest.php | 4 +- src/Qcloud/Cos/Tests/ObjectTest.php | 45 +++++++++++---------- 6 files changed, 68 insertions(+), 73 deletions(-) diff --git a/README.md b/README.md index 30beee55..37a6503e 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ $args是包含以下字段的关联数组: ```php //创建桶 -$result = $cosClient->createBucket(array('Bucket' => 'testbucket')); +$result = $cosClient->createBucket(array('Bucket' => 'testbucket-1250000000')); ``` ### 删除桶 deleteBucket @@ -59,7 +59,7 @@ $args是包含以下字段的关联数组: ```php //删除桶 -$result = $cosClient->deleteBucket(array('Bucket' => 'testbucket')); +$result = $cosClient->deleteBucket(array('Bucket' => 'testbucket-1250000000')); ``` ### 简单文件上传 putobject @@ -87,13 +87,13 @@ $args是包含以下字段的关联数组: ```php // 从内存中上传 $cosClient->putObject(array( - 'Bucket' => 'testbucket', + 'Bucket' => 'testbucket-1250000000', 'Key' => 'hello.txt', 'Body' => 'Hello World!')); // 上传本地文件 $cosClient->putObject(array( - 'Bucket' => 'testbucket', + 'Bucket' => 'testbucket-1250000000', 'Key' => 'hello.txt', 'Body' => fopen('./hello.txt', 'rb'))); ``` @@ -135,7 +135,7 @@ public Guzzle\Service\Resource\Model abortMultipartUpload(array $args = array()) ```php //上传文件 $result = $cosClient->upload( - $bucket = 'testbucket', + $bucket = 'testbucket-1250000000', $key = '111.txt', $body = '131213'); ``` @@ -168,13 +168,13 @@ $args是包含以下字段的关联数组: ```php // 下载文件到内存 $result = $cosClient->getObject(array( - 'Bucket' => 'testbucket', + 'Bucket' => 'testbucket-1250000000', 'Key' => 'hello.txt')); echo($result['Body']) // 下载文件到本地 $result = $cosClient->getObject(array( - 'Bucket' => 'testbucket', + 'Bucket' => 'testbucket-1250000000', 'Key' => 'hello.txt', 'SaveAs' => './hello.txt')); ``` @@ -205,7 +205,7 @@ $args是包含以下字段的关联数组: ```php // 删除COS对象 $result = $cosClient->deleteObject(array( - 'Bucket' => 'testbucket', + 'Bucket' => 'testbucket-1250000000', 'Key' => 'hello.txt')); ``` @@ -236,7 +236,7 @@ $args是包含以下字段的关联数组: ```java // 获取COS文件属性 -$result $cosClient->headObject(array('Bucket' => 'testbucket', 'Key' => 'hello.txt')); +$result $cosClient->headObject(array('Bucket' => 'testbucket-1250000000', 'Key' => 'hello.txt')); ``` @@ -267,7 +267,7 @@ $args是包含以下字段的关联数组: ```php // 获取bucket下成员 -$result = $cosClient->listObjects(array('Bucket' => 'testbucket')); +$result = $cosClient->listObjects(array('Bucket' => 'testbucket-1250000000')); ``` ### putBucketACL @@ -297,7 +297,7 @@ $args是包含以下字段的关联数组: #putBucketACL try { $result = $cosClient->PutBucketAcl(array( - 'Bucket' => 'testbucket', + 'Bucket' => 'testbucket-1250000000', 'Grants' => array( array( 'Grantee' => array( @@ -339,7 +339,7 @@ public Guzzle\Service\Resource\Model getBucketACL(array $args = array()); #getBucketACL try { $result = $cosClient->GetBucketAcl(array( - 'Bucket' => 'testbucket',)); + 'Bucket' => 'testbucket-1250000000',)); print_r($result); } catch (\Exception $e) { echo "$e\n"; @@ -368,7 +368,7 @@ public Guzzle\Service\Resource\Model putObjectACL(array $args = array()); #putObjectACL try { $result = $cosClient->PutBucketAcl(array( - 'Bucket' => 'testbucket', + 'Bucket' => 'testbucket-1250000000', 'Grants' => array( array( 'Grantee' => array( @@ -409,7 +409,7 @@ public Guzzle\Service\Resource\Model getObjectACL(array $args = array()); #getObjectACL try { $result = $cosClient->getObjectAcl(array( - 'Bucket' => 'testbucket', + 'Bucket' => 'testbucket-1250000000', 'Key' => '11')); print_r($result); } catch (\Exception $e) { @@ -670,7 +670,7 @@ try { ```php //获得object的下载url -$bucket = 'testbucket'; +$bucket = 'testbucket-1250000000'; $key = 'hello.txt'; $region = 'cn-south'; $url = "/{$key}"; diff --git a/sample.php b/sample.php index 6eb08e0c..c3660dd2 100644 --- a/sample.php +++ b/sample.php @@ -4,7 +4,6 @@ $cosClient = new Qcloud\Cos\Client(array('region' => getenv('COS_REGION'), 'credentials'=> array( - 'appId' => getenv('COS_APPID'), 'secretId' => getenv('COS_KEY'), 'secretKey' => getenv('COS_SECRET')))); #listBuckets @@ -18,7 +17,7 @@ #createBucket try { - $result = $cosClient->createBucket(array('Bucket' => 'testbucket')); + $result = $cosClient->createBucket(array('Bucket' => 'testbucket-1252448703')); print_r($result); } catch (\Exception $e) { echo "$e\n"; @@ -27,7 +26,7 @@ #uploadbigfile try { $result = $cosClient->upload( - $bucket='testbucket', + $bucket='testbucket-1252448703', $key = '111.txt', $body = str_repeat('a', 5* 1024 * 1024)); print_r($result); @@ -38,8 +37,8 @@ #putObject try { $result = $cosClient->putObject(array( - 'Bucket' => 'testbucket', - 'Key' => '11/../11111////11', + 'Bucket' => 'testbucket-1252448703', + 'Key' => '11', 'Body' => 'Hello World!')); print_r($result); } catch (\Exception $e) { @@ -49,17 +48,16 @@ #getObject try { $result = $cosClient->getObject(array( - 'Bucket' => 'lewzylu02', - 'Key' => 'tox.ini', + 'Bucket' => 'testbucket-1252448703', + 'Key' => '11', )); - echo(typeof($result)); } catch (\Exception $e) { echo "$e\n"; } #deleteObject try { $result = $cosClient->deleteObject(array( - 'Bucket' => 'lewzylu02', + 'Bucket' => 'testbucket-1252448703', 'Key' => '111.txt')); print_r($result); } catch (\Exception $e) { @@ -88,7 +86,7 @@ #deleteBucket try { $result = $cosClient->deleteBucket(array( - 'Bucket' => 'testbucket')); + 'Bucket' => 'testbucket-1252448703')); print_r($result); } catch (\Exception $e) { echo "$e\n"; @@ -97,7 +95,7 @@ #headObject try { $result = $cosClient->headObject(array( - 'Bucket' => 'testbucket', + 'Bucket' => 'testbucket-1252448703', 'Key' => '11')); print_r($result); } catch (\Exception $e) { @@ -107,7 +105,7 @@ #listObjects try { $result = $cosClient->headObject(array( - 'Bucket' => 'testbucket', + 'Bucket' => 'testbucket-1252448703', 'Key' => '11')); print_r($result); } catch (\Exception $e) { @@ -117,14 +115,14 @@ #listObjects try { $result = $cosClient->listObjects(array( - 'Bucket' => 'testbucket')); + 'Bucket' => 'testbucket-1252448703')); print_r($result); } catch (\Exception $e) { echo "$e\n"; } #putObjectUrl try { - $bucket = 'testbucket'; + $bucket = 'testbucket-1252448703'; $key = 'hello.txt'; $region = 'cn-south'; $url = "/{$key}"; @@ -138,7 +136,7 @@ #putBucketACL try { $result = $cosClient->PutBucketAcl(array( - 'Bucket' => 'testbucket', + 'Bucket' => 'testbucket-1252448703', 'Grants' => array( array( 'Grantee' => array( @@ -161,7 +159,7 @@ #getBucketACL try { $result = $cosClient->GetBucketAcl(array( - 'Bucket' => 'testbucket',)); + 'Bucket' => 'testbucket-1252448703',)); print_r($result); } catch (\Exception $e) { echo "$e\n"; @@ -170,7 +168,7 @@ #putObjectACL try { $result = $cosClient->PutBucketAcl(array( - 'Bucket' => 'testbucket', + 'Bucket' => 'testbucket-1252448703', 'Grants' => array( array( 'Grantee' => array( @@ -194,7 +192,7 @@ #getObjectACL try { $result = $cosClient->getObjectAcl(array( - 'Bucket' => 'testbucket', + 'Bucket' => 'testbucket-1252448703', 'Key' => '11')); print_r($result); } catch (\Exception $e) { @@ -204,7 +202,7 @@ try { $result = $cosClient->putBucketLifecycle(array( // Bucket is required - 'Bucket' => 'lewzylu02', + 'Bucket' => 'testbucket-1252448703', // Rules is required 'Rules' => array( array( @@ -232,7 +230,7 @@ try { $result = $cosClient->getBucketLifecycle(array( // Bucket is required - 'Bucket' =>'lewzylu02', + 'Bucket' =>'testbucket-1252448703', )); print_r($result); } catch (\Exception $e) { @@ -243,7 +241,7 @@ try { $result = $cosClient->deleteBucketLifecycle(array( // Bucket is required - 'Bucket' =>'lewzylu02', + 'Bucket' =>'testbucket-1252448703', )); print_r($result); } catch (\Exception $e) { @@ -253,7 +251,7 @@ try { $result = $cosClient->putBucketCors(array( // Bucket is required - 'Bucket' => 'lewzylu02', + 'Bucket' => 'testbucket-1252448703', // CORSRules is required 'CORSRules' => array( array( @@ -263,8 +261,6 @@ 'AllowedMethods' => array('PUT'), // AllowedOrigins is required 'AllowedOrigins' => array('http://www.qq.com', ), -// 'ExposeHeaders' => array('*', ), -// 'MaxAgeSeconds' => 1, ), // ... repeated ), @@ -277,7 +273,7 @@ try { $result = $cosClient->getBucketCors(array( // Bucket is required - 'Bucket' => 'lewzylu02', + 'Bucket' => 'testbucket-1252448703', )); print_r($result); } catch (\Exception $e) { @@ -287,7 +283,7 @@ try { $result = $cosClient->deleteBucketCors(array( // Bucket is required - 'Bucket' => 'lewzylu02', + 'Bucket' => 'testbucket-1252448703', )); print_r($result); } catch (\Exception $e) { @@ -297,7 +293,7 @@ try { $result = $cosClient->copyObject(array( // Bucket is required - 'Bucket' => 'lewzylu02', + 'Bucket' => 'testbucket-1252448703', // CopySource is required 'CopySource' => 'lewzylu03-1252448703.cos.ap-guangzhou.myqcloud.com/tox.ini', // Key is required @@ -307,9 +303,9 @@ } catch (\Exception $e) { echo "$e\n"; } -Copy +#Copy try { - $result = $cosClient->Copy($bucket = 'lewzylu02', + $result = $cosClient->Copy($bucket = 'testbucket-1252448703', $key = 'cmake-3.8.2为.tar.gz', $copysource = 'lewzylu-1252448703.cos.ap-guangzhou.myqcloud.com/cmake-3.8.2为.tar.gz'); print_r($result); diff --git a/src/Qcloud/Cos/BucketStyleListener.php b/src/Qcloud/Cos/BucketStyleListener.php index 7403f0bc..5c3e5c63 100644 --- a/src/Qcloud/Cos/BucketStyleListener.php +++ b/src/Qcloud/Cos/BucketStyleListener.php @@ -36,9 +36,9 @@ public function onCommandAfterPrepare(Event $event) { $command = $event['command']; $bucket = $command['Bucket']; $request = $command->getRequest(); - if (endWith($bucket,'-'.$this->appId)) + if ($this->appId != null && endWith($bucket,'-'.$this->appId) == False) { - $bucket = substr($bucket,0,strlen($bucket)-strlen('-'.$this->appId)); + $bucket = $bucket.'-'.$this->appId; } if ($command->getName() == 'ListBuckets') { @@ -56,7 +56,7 @@ public function onCommandAfterPrepare(Event $event) { $request->getParams()->set('bucket', $bucket)->set('key', $key); // Switch to virtual hosted bucket - $request->setHost($bucket . '-' . $this->appId . '.' . $request->getHost()); + $request->setHost($bucket. '.' . $request->getHost()); $request->setPath(preg_replace("#^/{$bucket}#", '', $request->getPath())); if (!$bucket) { diff --git a/src/Qcloud/Cos/Client.php b/src/Qcloud/Cos/Client.php index 24d5c789..9addbdfc 100644 --- a/src/Qcloud/Cos/Client.php +++ b/src/Qcloud/Cos/Client.php @@ -41,7 +41,7 @@ public function __construct($config) { $this->region = $regionmap[$this->region]; } $this->credentials = $config['credentials']; - $this->appId = $config['credentials']['appId']; + $this->appId = isset($config['credentials']['appId']) ? $config['credentials']['appId'] : null; $this->secretId = $config['credentials']['secretId']; $this->secretKey = $config['credentials']['secretKey']; $this->token = isset($config['credentials']['token']) ? $config['credentials']['token'] : null; diff --git a/src/Qcloud/Cos/Tests/BucketTest.php b/src/Qcloud/Cos/Tests/BucketTest.php index b678f79b..810a3734 100644 --- a/src/Qcloud/Cos/Tests/BucketTest.php +++ b/src/Qcloud/Cos/Tests/BucketTest.php @@ -41,10 +41,10 @@ public function testCreateBucket() public function testDeleteBucket() { try { - $result = $this->cosClient->createBucket(array('Bucket' => 'testbucket2')); + $result = $this->cosClient->createBucket(array('Bucket' => 'testbucket')); var_dump($result); sleep(2); - $result = $this->cosClient->deleteBucket(array('Bucket' => 'testbucket2')); + $result = $this->cosClient->deleteBucket(array('Bucket' => 'testbucket')); var_dump($result); } catch (\Exception $e) { $this->assertFalse(true, $e); diff --git a/src/Qcloud/Cos/Tests/ObjectTest.php b/src/Qcloud/Cos/Tests/ObjectTest.php index f1c73537..653025dc 100644 --- a/src/Qcloud/Cos/Tests/ObjectTest.php +++ b/src/Qcloud/Cos/Tests/ObjectTest.php @@ -9,11 +9,10 @@ class ObjectTest extends \PHPUnit_Framework_TestCase { private $cosClient; protected function setUp() { - TestHelper::nuke('testbucket'); + TestHelper::nuke('testbucket-1252448703'); $this->cosClient = new Client(array('region' => getenv('COS_REGION'), 'credentials'=> array( - 'appId' => getenv('COS_APPID'), 'secretId' => getenv('COS_KEY'), 'secretKey' => getenv('COS_SECRET')))); } @@ -21,16 +20,16 @@ protected function setUp() { protected function tearDown() { - TestHelper::nuke('testbucket'); + TestHelper::nuke('testbucket-1252448703'); sleep(2); } public function testPutObject() { try { - $this->cosClient->createBucket(array('Bucket' => 'testbucket')); + $this->cosClient->createBucket(array('Bucket' => 'testbucket-1252448703')); sleep(2); $this->cosClient->putObject(array( - 'Bucket' => 'testbucket', 'Key' => 'hello.txt', 'Body' => 'Hello World')); + 'Bucket' => 'testbucket-1252448703', 'Key' => 'hello.txt', 'Body' => 'Hello World')); } catch (\Exception $e) { $this->assertFalse(true, $e); } @@ -39,7 +38,7 @@ public function testPutObject() { public function testPutObjectIntoNonexistedBucket() { try { $this->cosClient->putObject(array( - 'Bucket' => 'testbucket', 'Key' => 'hello.txt', 'Body' => 'Hello World')); + 'Bucket' => 'testbucket-1252448703', 'Key' => 'hello.txt', 'Body' => 'Hello World')); } catch (CosException $e) { $this->assertTrue($e->getExceptionCode() === 'NoSuchBucket'); $this->assertTrue($e->getStatusCode() === 404); @@ -48,10 +47,10 @@ public function testPutObjectIntoNonexistedBucket() { public function testUploadSmallObject() { try { - $result = $this->cosClient->createBucket(array('Bucket' => 'testbucket')); + $result = $this->cosClient->createBucket(array('Bucket' => 'testbucket-1252448703')); var_dump($result); sleep(2); - $this->cosClient->upload('testbucket', '你好.txt', 'Hello World'); + $this->cosClient->upload('testbucket-1252448703', '你好.txt', 'Hello World'); } catch (\Exception $e) { $this->assertFalse(true, $e); } @@ -59,10 +58,10 @@ public function testUploadSmallObject() { public function testUploadComplexObject() { try { - $result = $this->cosClient->createBucket(array('Bucket' => 'testbucket')); + $result = $this->cosClient->createBucket(array('Bucket' => 'testbucket-1252448703')); var_dump($result); sleep(2); - $this->cosClient->upload('testbucket', '→↓←→↖↗↙↘! \"#$%&\'()*+,-./0123456789:;<=>@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~', 'Hello World'); + $this->cosClient->upload('testbucket-1252448703', '→↓←→↖↗↙↘! \"#$%&\'()*+,-./0123456789:;<=>@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~', 'Hello World'); } catch (\Exception $e) { $this->assertFalse(true, $e); } @@ -70,9 +69,9 @@ public function testUploadComplexObject() { public function testUploadLargeObject() { try { - $this->cosClient->createBucket(array('Bucket' => 'testbucket')); + $this->cosClient->createBucket(array('Bucket' => 'testbucket-1252448703')); sleep(5); - $this->cosClient->upload('testbucket', 'hello.txt', str_repeat('a', 20 * 1024 * 1024)); + $this->cosClient->upload('testbucket-1252448703', 'hello.txt', str_repeat('a', 20 * 1024 * 1024)); } catch (\Exception $e) { $this->assertFalse(true, $e); } @@ -80,11 +79,11 @@ public function testUploadLargeObject() { public function testGetObject() { try { - $this->cosClient->createBucket(array('Bucket' => 'testbucket')); + $this->cosClient->createBucket(array('Bucket' => 'testbucket-1252448703')); sleep(5); - $this->cosClient->upload('testbucket', '你好.txt', 'Hello World'); + $this->cosClient->upload('testbucket-1252448703', '你好.txt', 'Hello World'); $this->cosClient->getObject(array( - 'Bucket' => 'testbucket', + 'Bucket' => 'testbucket-1252448703', 'Key' => '你好.txt',)); } catch (\Exception $e) { $this->assertFalse(true, $e); @@ -93,8 +92,8 @@ public function testGetObject() { public function testGetObjectUrl() { try{ - $this->cosClient->createBucket(array('Bucket' => 'testbucket')); - $this->cosClient->getObjectUrl('testbucket', 'hello.txt', '+10 minutes'); + $this->cosClient->createBucket(array('Bucket' => 'testbucket-1252448703')); + $this->cosClient->getObjectUrl('testbucket-1252448703', 'hello.txt', '+10 minutes'); } catch (\Exception $e) { $this->assertFalse(true, $e); } @@ -102,11 +101,11 @@ public function testGetObjectUrl() { public function testPutObjectACL() { try { - $this->cosClient->createBucket(array('Bucket' => 'testbucket')); + $this->cosClient->createBucket(array('Bucket' => 'testbucket-1252448703')); sleep(5); - $this->cosClient->upload('testbucket', '11', 'hello.txt'); + $this->cosClient->upload('testbucket-1252448703', '11', 'hello.txt'); $this->cosClient->PutObjectAcl(array( - 'Bucket' => 'testbucket', + 'Bucket' => 'testbucket-1252448703', 'Key' => '11', 'Grants' => array( array( @@ -131,11 +130,11 @@ public function testPutObjectACL() { public function testGetObjectACL() { try { - $this->cosClient->createBucket(array('Bucket' => 'testbucket')); + $this->cosClient->createBucket(array('Bucket' => 'testbucket-1252448703')); sleep(5); - $this->cosClient->upload('testbucket', '11', 'hello.txt'); + $this->cosClient->upload('testbucket-1252448703', '11', 'hello.txt'); $this->cosClient->PutObjectAcl(array( - 'Bucket' => 'testbucket', + 'Bucket' => 'testbucket-1252448703', 'Key' => '11', 'Grants' => array( array( From c806ff519c5a15669b6cda4eae5b5ab2e853ef16 Mon Sep 17 00:00:00 2001 From: lewzylu <327874225@qq.com> Date: Fri, 8 Dec 2017 17:46:40 +0800 Subject: [PATCH 2/4] fix appid --- sample.php | 593 +++++++++++++------------ src/Qcloud/Cos/BucketStyleListener.php | 13 +- src/Qcloud/Cos/Client.php | 1 - src/Qcloud/Cos/Service.php | 2 + src/Qcloud/Cos/Tests/ObjectTest.php | 1 + 5 files changed, 307 insertions(+), 303 deletions(-) diff --git a/sample.php b/sample.php index c3660dd2..12fee9be 100644 --- a/sample.php +++ b/sample.php @@ -4,311 +4,312 @@ $cosClient = new Qcloud\Cos\Client(array('region' => getenv('COS_REGION'), 'credentials'=> array( + 'appId' => getenv('COS_APPID'), 'secretId' => getenv('COS_KEY'), 'secretKey' => getenv('COS_SECRET')))); -#listBuckets -try { - $result = $cosClient->listBuckets(); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} - - -#createBucket -try { - $result = $cosClient->createBucket(array('Bucket' => 'testbucket-1252448703')); - print_r($result); - } catch (\Exception $e) { - echo "$e\n"; -} +//#listBuckets +//try { +// $result = $cosClient->listBuckets(); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +// +// +//#createBucket +//try { +// $result = $cosClient->createBucket(array('Bucket' => 'testbucket-1252448703')); +// print_r($result); +// } catch (\Exception $e) { +// echo "$e\n"; +//} #uploadbigfile try { $result = $cosClient->upload( - $bucket='testbucket-1252448703', + $bucket='testbucket', $key = '111.txt', $body = str_repeat('a', 5* 1024 * 1024)); print_r($result); } catch (\Exception $e) { echo "$e\n"; } - -#putObject -try { - $result = $cosClient->putObject(array( - 'Bucket' => 'testbucket-1252448703', - 'Key' => '11', - 'Body' => 'Hello World!')); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} - -#getObject -try { - $result = $cosClient->getObject(array( - 'Bucket' => 'testbucket-1252448703', - 'Key' => '11', - )); -} catch (\Exception $e) { - echo "$e\n"; -} -#deleteObject -try { - $result = $cosClient->deleteObject(array( - 'Bucket' => 'testbucket-1252448703', - 'Key' => '111.txt')); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} -#deleteObjects -try { - $result = $cosClient->deleteObjects(array( - // Bucket is required - 'Bucket' => 'string', - // Objects is required - 'Objects' => array( - array( - // Key is required - 'Key' => 'string', - 'VersionId' => 'string', - ), - // ... repeated - ), - )); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} - -#deleteBucket -try { - $result = $cosClient->deleteBucket(array( - 'Bucket' => 'testbucket-1252448703')); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} - -#headObject -try { - $result = $cosClient->headObject(array( - 'Bucket' => 'testbucket-1252448703', - 'Key' => '11')); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} - -#listObjects -try { - $result = $cosClient->headObject(array( - 'Bucket' => 'testbucket-1252448703', - 'Key' => '11')); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} - -#listObjects -try { - $result = $cosClient->listObjects(array( - 'Bucket' => 'testbucket-1252448703')); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} -#putObjectUrl -try { - $bucket = 'testbucket-1252448703'; - $key = 'hello.txt'; - $region = 'cn-south'; - $url = "/{$key}"; - $request = $cosClient->get($url); - $signedUrl = $cosClient->getObjectUrl($bucket, $key, '+10 minutes'); - echo ($signedUrl); - -} catch (\Exception $e) { - echo "$e\n"; -} -#putBucketACL -try { - $result = $cosClient->PutBucketAcl(array( - 'Bucket' => 'testbucket-1252448703', - 'Grants' => array( - array( - 'Grantee' => array( - 'DisplayName' => 'qcs::cam::uin/327874225:uin/327874225', - 'ID' => 'qcs::cam::uin/327874225:uin/327874225', - 'Type' => 'CanonicalUser', - ), - 'Permission' => 'FULL_CONTROL', - ), - // ... repeated - ), - 'Owner' => array( - 'DisplayName' => 'qcs::cam::uin/3210232098:uin/3210232098', - 'ID' => 'qcs::cam::uin/3210232098:uin/3210232098', - ),)); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} -#getBucketACL -try { - $result = $cosClient->GetBucketAcl(array( - 'Bucket' => 'testbucket-1252448703',)); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} - -#putObjectACL -try { - $result = $cosClient->PutBucketAcl(array( - 'Bucket' => 'testbucket-1252448703', - 'Grants' => array( - array( - 'Grantee' => array( - 'DisplayName' => 'qcs::cam::uin/327874225:uin/327874225', - 'ID' => 'qcs::cam::uin/327874225:uin/327874225', - 'Type' => 'CanonicalUser', - ), - 'Permission' => 'FULL_CONTROL', - ), - // ... repeated - ), - 'Owner' => array( - 'DisplayName' => 'qcs::cam::uin/3210232098:uin/3210232098', - 'ID' => 'qcs::cam::uin/3210232098:uin/3210232098', - ),)); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} - -#getObjectACL -try { - $result = $cosClient->getObjectAcl(array( - 'Bucket' => 'testbucket-1252448703', - 'Key' => '11')); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} -#putBucketLifecycle -try { - $result = $cosClient->putBucketLifecycle(array( - // Bucket is required - 'Bucket' => 'testbucket-1252448703', - // Rules is required - 'Rules' => array( - array( - 'Expiration' => array( - 'Days' => 1, - ), - 'ID' => 'id1', - 'Filter' => array( - 'Prefix' => 'documents/' - ), - // Status is required - 'Status' => 'Enabled', - 'Transition' => array( - 'Days' => 100, - 'StorageClass' => 'NEARLINE', - ), - // ... repeated - ), - ))); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} -#getBucketLifecycle -try { - $result = $cosClient->getBucketLifecycle(array( - // Bucket is required - 'Bucket' =>'testbucket-1252448703', - )); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} - -#deleteBucketLifecycle -try { - $result = $cosClient->deleteBucketLifecycle(array( - // Bucket is required - 'Bucket' =>'testbucket-1252448703', - )); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} -#putBucketCors -try { - $result = $cosClient->putBucketCors(array( - // Bucket is required - 'Bucket' => 'testbucket-1252448703', - // CORSRules is required - 'CORSRules' => array( - array( - 'ID' => '1234', - 'AllowedHeaders' => array('*'), - // AllowedMethods is required - 'AllowedMethods' => array('PUT'), - // AllowedOrigins is required - 'AllowedOrigins' => array('http://www.qq.com', ), - ), - // ... repeated - ), - )); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} -#getBucketCors -try { - $result = $cosClient->getBucketCors(array( - // Bucket is required - 'Bucket' => 'testbucket-1252448703', - )); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} -#deleteBucketCors -try { - $result = $cosClient->deleteBucketCors(array( - // Bucket is required - 'Bucket' => 'testbucket-1252448703', - )); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} -#copyobject -try { - $result = $cosClient->copyObject(array( - // Bucket is required - 'Bucket' => 'testbucket-1252448703', - // CopySource is required - 'CopySource' => 'lewzylu03-1252448703.cos.ap-guangzhou.myqcloud.com/tox.ini', - // Key is required - 'Key' => 'string', - )); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} -#Copy -try { - $result = $cosClient->Copy($bucket = 'testbucket-1252448703', - $key = 'cmake-3.8.2为.tar.gz', - $copysource = 'lewzylu-1252448703.cos.ap-guangzhou.myqcloud.com/cmake-3.8.2为.tar.gz'); - print_r($result); -} catch (\Exception $e) { - echo "$e\n"; -} +// +//#putObject +//try { +// $result = $cosClient->putObject(array( +// 'Bucket' => 'testbucket-1252448703', +// 'Key' => '11', +// 'Body' => 'Hello World!')); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +// +//#getObject +//try { +// $result = $cosClient->getObject(array( +// 'Bucket' => 'testbucket-1252448703', +// 'Key' => '11', +// )); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +//#deleteObject +//try { +// $result = $cosClient->deleteObject(array( +// 'Bucket' => 'testbucket-1252448703', +// 'Key' => '111.txt')); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +//#deleteObjects +//try { +// $result = $cosClient->deleteObjects(array( +// // Bucket is required +// 'Bucket' => 'string', +// // Objects is required +// 'Objects' => array( +// array( +// // Key is required +// 'Key' => 'string', +// 'VersionId' => 'string', +// ), +// // ... repeated +// ), +// )); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +// +//#deleteBucket +//try { +// $result = $cosClient->deleteBucket(array( +// 'Bucket' => 'testbucket-1252448703')); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +// +//#headObject +//try { +// $result = $cosClient->headObject(array( +// 'Bucket' => 'testbucket-1252448703', +// 'Key' => '11')); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +// +//#listObjects +//try { +// $result = $cosClient->headObject(array( +// 'Bucket' => 'testbucket-1252448703', +// 'Key' => '11')); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +// +//#listObjects +//try { +// $result = $cosClient->listObjects(array( +// 'Bucket' => 'testbucket-1252448703')); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +//#putObjectUrl +//try { +// $bucket = 'testbucket-1252448703'; +// $key = 'hello.txt'; +// $region = 'cn-south'; +// $url = "/{$key}"; +// $request = $cosClient->get($url); +// $signedUrl = $cosClient->getObjectUrl($bucket, $key, '+10 minutes'); +// echo ($signedUrl); +// +//} catch (\Exception $e) { +// echo "$e\n"; +//} +//#putBucketACL +//try { +// $result = $cosClient->PutBucketAcl(array( +// 'Bucket' => 'testbucket-1252448703', +// 'Grants' => array( +// array( +// 'Grantee' => array( +// 'DisplayName' => 'qcs::cam::uin/327874225:uin/327874225', +// 'ID' => 'qcs::cam::uin/327874225:uin/327874225', +// 'Type' => 'CanonicalUser', +// ), +// 'Permission' => 'FULL_CONTROL', +// ), +// // ... repeated +// ), +// 'Owner' => array( +// 'DisplayName' => 'qcs::cam::uin/3210232098:uin/3210232098', +// 'ID' => 'qcs::cam::uin/3210232098:uin/3210232098', +// ),)); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +//#getBucketACL +//try { +// $result = $cosClient->GetBucketAcl(array( +// 'Bucket' => 'testbucket-1252448703',)); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +// +//#putObjectACL +//try { +// $result = $cosClient->PutBucketAcl(array( +// 'Bucket' => 'testbucket-1252448703', +// 'Grants' => array( +// array( +// 'Grantee' => array( +// 'DisplayName' => 'qcs::cam::uin/327874225:uin/327874225', +// 'ID' => 'qcs::cam::uin/327874225:uin/327874225', +// 'Type' => 'CanonicalUser', +// ), +// 'Permission' => 'FULL_CONTROL', +// ), +// // ... repeated +// ), +// 'Owner' => array( +// 'DisplayName' => 'qcs::cam::uin/3210232098:uin/3210232098', +// 'ID' => 'qcs::cam::uin/3210232098:uin/3210232098', +// ),)); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +// +//#getObjectACL +//try { +// $result = $cosClient->getObjectAcl(array( +// 'Bucket' => 'testbucket-1252448703', +// 'Key' => '11')); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +//#putBucketLifecycle +//try { +// $result = $cosClient->putBucketLifecycle(array( +// // Bucket is required +// 'Bucket' => 'testbucket-1252448703', +// // Rules is required +// 'Rules' => array( +// array( +// 'Expiration' => array( +// 'Days' => 1, +// ), +// 'ID' => 'id1', +// 'Filter' => array( +// 'Prefix' => 'documents/' +// ), +// // Status is required +// 'Status' => 'Enabled', +// 'Transition' => array( +// 'Days' => 100, +// 'StorageClass' => 'NEARLINE', +// ), +// // ... repeated +// ), +// ))); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +//#getBucketLifecycle +//try { +// $result = $cosClient->getBucketLifecycle(array( +// // Bucket is required +// 'Bucket' =>'testbucket-1252448703', +// )); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +// +//#deleteBucketLifecycle +//try { +// $result = $cosClient->deleteBucketLifecycle(array( +// // Bucket is required +// 'Bucket' =>'testbucket-1252448703', +// )); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +//#putBucketCors +//try { +// $result = $cosClient->putBucketCors(array( +// // Bucket is required +// 'Bucket' => 'testbucket-1252448703', +// // CORSRules is required +// 'CORSRules' => array( +// array( +// 'ID' => '1234', +// 'AllowedHeaders' => array('*'), +// // AllowedMethods is required +// 'AllowedMethods' => array('PUT'), +// // AllowedOrigins is required +// 'AllowedOrigins' => array('http://www.qq.com', ), +// ), +// // ... repeated +// ), +// )); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +//#getBucketCors +//try { +// $result = $cosClient->getBucketCors(array( +// // Bucket is required +// 'Bucket' => 'testbucket-1252448703', +// )); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +//#deleteBucketCors +//try { +// $result = $cosClient->deleteBucketCors(array( +// // Bucket is required +// 'Bucket' => 'testbucket-1252448703', +// )); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +//#copyobject +//try { +// $result = $cosClient->copyObject(array( +// // Bucket is required +// 'Bucket' => 'testbucket-1252448703', +// // CopySource is required +// 'CopySource' => 'lewzylu03-1252448703.cos.ap-guangzhou.myqcloud.com/tox.ini', +// // Key is required +// 'Key' => 'string', +// )); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} +//#Copy +//try { +// $result = $cosClient->Copy($bucket = 'testbucket-1252448703', +// $key = 'cmake-3.8.2为.tar.gz', +// $copysource = 'lewzylu-1252448703.cos.ap-guangzhou.myqcloud.com/cmake-3.8.2为.tar.gz'); +// print_r($result); +//} catch (\Exception $e) { +// echo "$e\n"; +//} diff --git a/src/Qcloud/Cos/BucketStyleListener.php b/src/Qcloud/Cos/BucketStyleListener.php index 5c3e5c63..aa4088eb 100644 --- a/src/Qcloud/Cos/BucketStyleListener.php +++ b/src/Qcloud/Cos/BucketStyleListener.php @@ -36,10 +36,7 @@ public function onCommandAfterPrepare(Event $event) { $command = $event['command']; $bucket = $command['Bucket']; $request = $command->getRequest(); - if ($this->appId != null && endWith($bucket,'-'.$this->appId) == False) - { - $bucket = $bucket.'-'.$this->appId; - } + if ($command->getName() == 'ListBuckets') { $request->setHost('service.cos.myqcloud.com'); @@ -52,13 +49,17 @@ public function onCommandAfterPrepare(Event $event) { } } + $request->setPath(preg_replace("#^/{$bucket}#", '', $request->getPath())); + + if ($this->appId != null && endWith($bucket,'-'.$this->appId) == False) + { + $bucket = $bucket.'-'.$this->appId; + } // Set the key and bucket on the request $request->getParams()->set('bucket', $bucket)->set('key', $key); // Switch to virtual hosted bucket $request->setHost($bucket. '.' . $request->getHost()); - $request->setPath(preg_replace("#^/{$bucket}#", '', $request->getPath())); - if (!$bucket) { $request->getParams()->set('cos.resource', '/'); } else { diff --git a/src/Qcloud/Cos/Client.php b/src/Qcloud/Cos/Client.php index 9addbdfc..e68e459e 100644 --- a/src/Qcloud/Cos/Client.php +++ b/src/Qcloud/Cos/Client.php @@ -96,7 +96,6 @@ public function getObjectUrl($bucket, $key, $expires = null, array $args = array return $expires ? $this->createPresignedUrl($request, $expires) : $request->getUrl(); } public function upload($bucket, $key, $body, $acl = '', $options = array()) { - print_r($key); $body = EntityBody::factory($body); $options = Collection::fromConfig(array_change_key_case($options), array( 'min_part_size' => MultipartUpload::MIN_PART_SIZE, diff --git a/src/Qcloud/Cos/Service.php b/src/Qcloud/Cos/Service.php index 40caea65..6528df2c 100644 --- a/src/Qcloud/Cos/Service.php +++ b/src/Qcloud/Cos/Service.php @@ -1247,6 +1247,7 @@ public static function getService() { 'xmlRoot' => array( 'name' => 'ReplicationConfiguration', ), + 'contentMd5' => true, ), 'parameters' => array( 'Bucket' => array( @@ -1343,6 +1344,7 @@ public static function getService() { 'xmlRoot' => array( 'name' => 'ReplicationConfiguration', ), + 'contentMd5' => true, ), 'parameters' => array( 'Bucket' => array( diff --git a/src/Qcloud/Cos/Tests/ObjectTest.php b/src/Qcloud/Cos/Tests/ObjectTest.php index 653025dc..328cd722 100644 --- a/src/Qcloud/Cos/Tests/ObjectTest.php +++ b/src/Qcloud/Cos/Tests/ObjectTest.php @@ -13,6 +13,7 @@ protected function setUp() { $this->cosClient = new Client(array('region' => getenv('COS_REGION'), 'credentials'=> array( +# 'appId' => getenv('COS_APPID'), 'secretId' => getenv('COS_KEY'), 'secretKey' => getenv('COS_SECRET')))); } From 38eec8b892d986e9f37d075c87dd99f59b9d9130 Mon Sep 17 00:00:00 2001 From: lewzylu <327874225@qq.com> Date: Fri, 8 Dec 2017 20:26:05 +0800 Subject: [PATCH 3/4] Fix urlencode --- sample.php | 40 +++++++++++++------------- src/Qcloud/Cos/BucketStyleListener.php | 2 ++ src/Qcloud/Cos/Client.php | 2 +- 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/sample.php b/sample.php index 12fee9be..2b0a7845 100644 --- a/sample.php +++ b/sample.php @@ -16,36 +16,36 @@ //} // // -//#createBucket -//try { -// $result = $cosClient->createBucket(array('Bucket' => 'testbucket-1252448703')); -// print_r($result); -// } catch (\Exception $e) { -// echo "$e\n"; -//} - -#uploadbigfile +#createBucket try { - $result = $cosClient->upload( - $bucket='testbucket', - $key = '111.txt', - $body = str_repeat('a', 5* 1024 * 1024)); + $result = $cosClient->createBucket(array('Bucket' => 'testbucket')); print_r($result); } catch (\Exception $e) { echo "$e\n"; } -// -//#putObject + +//#uploadbigfile //try { -// $result = $cosClient->putObject(array( -// 'Bucket' => 'testbucket-1252448703', -// 'Key' => '11', -// 'Body' => 'Hello World!')); +// $result = $cosClient->upload( +// $bucket='testbucket', +// $key = '111.txt', +// $body = str_repeat('a', 5* 1024 * 1024)); // print_r($result); -//} catch (\Exception $e) { +// } catch (\Exception $e) { // echo "$e\n"; //} // +#putObject +try { + $result = $cosClient->putObject(array( + 'Bucket' => 'testbucket-1252448703', + 'Key' => '11//32//43', + 'Body' => 'Hello World!')); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} +// //#getObject //try { // $result = $cosClient->getObject(array( diff --git a/src/Qcloud/Cos/BucketStyleListener.php b/src/Qcloud/Cos/BucketStyleListener.php index aa4088eb..1c4251a1 100644 --- a/src/Qcloud/Cos/BucketStyleListener.php +++ b/src/Qcloud/Cos/BucketStyleListener.php @@ -58,6 +58,8 @@ public function onCommandAfterPrepare(Event $event) { // Set the key and bucket on the request $request->getParams()->set('bucket', $bucket)->set('key', $key); + #echo(str_replace("%2F","/",$request->getPath())); + $request->setPath(str_replace("%2F","/",$request->getPath())); // Switch to virtual hosted bucket $request->setHost($bucket. '.' . $request->getHost()); if (!$bucket) { diff --git a/src/Qcloud/Cos/Client.php b/src/Qcloud/Cos/Client.php index e68e459e..d7054963 100644 --- a/src/Qcloud/Cos/Client.php +++ b/src/Qcloud/Cos/Client.php @@ -158,7 +158,7 @@ public function copy($bucket, $key, $copysource, $acl = '', $options = array()) public static function encodeKey($key) { return $key; - //return str_replace('%2F', '/', rawurlencode($key)); + return str_replace('%2F', '/', rawurlencode($key)); } public static function explodeKey($key) { From b440c075ff5c3641d8db59323b7bbc7c88feebf8 Mon Sep 17 00:00:00 2001 From: lewzylu <327874225@qq.com> Date: Mon, 11 Dec 2017 21:57:03 +0800 Subject: [PATCH 4/4] fix upload headers --- sample.php | 581 +++++++++++++------------ src/Guzzle/Http/Url.php | 1 - src/Qcloud/Cos/BucketStyleListener.php | 3 +- src/Qcloud/Cos/Client.php | 18 +- src/Qcloud/Cos/Command.php | 3 +- src/Qcloud/Cos/Service.php | 4 + src/Qcloud/Cos/Signature.php | 1 + 7 files changed, 306 insertions(+), 305 deletions(-) diff --git a/sample.php b/sample.php index 2b0a7845..ff9a00dd 100644 --- a/sample.php +++ b/sample.php @@ -7,34 +7,37 @@ 'appId' => getenv('COS_APPID'), 'secretId' => getenv('COS_KEY'), 'secretKey' => getenv('COS_SECRET')))); -//#listBuckets -//try { -// $result = $cosClient->listBuckets(); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -// -// +#listBuckets +try { + $result = $cosClient->listBuckets(); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} + + #createBucket try { - $result = $cosClient->createBucket(array('Bucket' => 'testbucket')); + $result = $cosClient->createBucket(array('Bucket' => 'testbucket-1252448703')); print_r($result); } catch (\Exception $e) { echo "$e\n"; } -//#uploadbigfile -//try { -// $result = $cosClient->upload( -// $bucket='testbucket', -// $key = '111.txt', -// $body = str_repeat('a', 5* 1024 * 1024)); -// print_r($result); -// } catch (\Exception $e) { -// echo "$e\n"; -//} -// +#uploadbigfile +try { + $result = $cosClient->upload( + $bucket='testbucket-1252448703', + $key = '111.txt', + $body = str_repeat('a', 5* 1024 * 1024), + $options = array( + "ACL"=>'private', + 'CacheControl' => 'private')); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} + #putObject try { $result = $cosClient->putObject(array( @@ -45,271 +48,271 @@ } catch (\Exception $e) { echo "$e\n"; } -// -//#getObject -//try { -// $result = $cosClient->getObject(array( -// 'Bucket' => 'testbucket-1252448703', -// 'Key' => '11', -// )); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -//#deleteObject -//try { -// $result = $cosClient->deleteObject(array( -// 'Bucket' => 'testbucket-1252448703', -// 'Key' => '111.txt')); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -//#deleteObjects -//try { -// $result = $cosClient->deleteObjects(array( -// // Bucket is required -// 'Bucket' => 'string', -// // Objects is required -// 'Objects' => array( -// array( -// // Key is required -// 'Key' => 'string', -// 'VersionId' => 'string', -// ), -// // ... repeated -// ), -// )); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -// -//#deleteBucket -//try { -// $result = $cosClient->deleteBucket(array( -// 'Bucket' => 'testbucket-1252448703')); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -// -//#headObject -//try { -// $result = $cosClient->headObject(array( -// 'Bucket' => 'testbucket-1252448703', -// 'Key' => '11')); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -// -//#listObjects -//try { -// $result = $cosClient->headObject(array( -// 'Bucket' => 'testbucket-1252448703', -// 'Key' => '11')); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -// -//#listObjects -//try { -// $result = $cosClient->listObjects(array( -// 'Bucket' => 'testbucket-1252448703')); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -//#putObjectUrl -//try { -// $bucket = 'testbucket-1252448703'; -// $key = 'hello.txt'; -// $region = 'cn-south'; -// $url = "/{$key}"; -// $request = $cosClient->get($url); -// $signedUrl = $cosClient->getObjectUrl($bucket, $key, '+10 minutes'); -// echo ($signedUrl); -// -//} catch (\Exception $e) { -// echo "$e\n"; -//} -//#putBucketACL -//try { -// $result = $cosClient->PutBucketAcl(array( -// 'Bucket' => 'testbucket-1252448703', -// 'Grants' => array( -// array( -// 'Grantee' => array( -// 'DisplayName' => 'qcs::cam::uin/327874225:uin/327874225', -// 'ID' => 'qcs::cam::uin/327874225:uin/327874225', -// 'Type' => 'CanonicalUser', -// ), -// 'Permission' => 'FULL_CONTROL', -// ), -// // ... repeated -// ), -// 'Owner' => array( -// 'DisplayName' => 'qcs::cam::uin/3210232098:uin/3210232098', -// 'ID' => 'qcs::cam::uin/3210232098:uin/3210232098', -// ),)); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -//#getBucketACL -//try { -// $result = $cosClient->GetBucketAcl(array( -// 'Bucket' => 'testbucket-1252448703',)); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -// -//#putObjectACL -//try { -// $result = $cosClient->PutBucketAcl(array( -// 'Bucket' => 'testbucket-1252448703', -// 'Grants' => array( -// array( -// 'Grantee' => array( -// 'DisplayName' => 'qcs::cam::uin/327874225:uin/327874225', -// 'ID' => 'qcs::cam::uin/327874225:uin/327874225', -// 'Type' => 'CanonicalUser', -// ), -// 'Permission' => 'FULL_CONTROL', -// ), -// // ... repeated -// ), -// 'Owner' => array( -// 'DisplayName' => 'qcs::cam::uin/3210232098:uin/3210232098', -// 'ID' => 'qcs::cam::uin/3210232098:uin/3210232098', -// ),)); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -// -//#getObjectACL -//try { -// $result = $cosClient->getObjectAcl(array( -// 'Bucket' => 'testbucket-1252448703', -// 'Key' => '11')); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -//#putBucketLifecycle -//try { -// $result = $cosClient->putBucketLifecycle(array( -// // Bucket is required -// 'Bucket' => 'testbucket-1252448703', -// // Rules is required -// 'Rules' => array( -// array( -// 'Expiration' => array( -// 'Days' => 1, -// ), -// 'ID' => 'id1', -// 'Filter' => array( -// 'Prefix' => 'documents/' -// ), -// // Status is required -// 'Status' => 'Enabled', -// 'Transition' => array( -// 'Days' => 100, -// 'StorageClass' => 'NEARLINE', -// ), -// // ... repeated -// ), -// ))); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -//#getBucketLifecycle -//try { -// $result = $cosClient->getBucketLifecycle(array( -// // Bucket is required -// 'Bucket' =>'testbucket-1252448703', -// )); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -// -//#deleteBucketLifecycle -//try { -// $result = $cosClient->deleteBucketLifecycle(array( -// // Bucket is required -// 'Bucket' =>'testbucket-1252448703', -// )); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -//#putBucketCors -//try { -// $result = $cosClient->putBucketCors(array( -// // Bucket is required -// 'Bucket' => 'testbucket-1252448703', -// // CORSRules is required -// 'CORSRules' => array( -// array( -// 'ID' => '1234', -// 'AllowedHeaders' => array('*'), -// // AllowedMethods is required -// 'AllowedMethods' => array('PUT'), -// // AllowedOrigins is required -// 'AllowedOrigins' => array('http://www.qq.com', ), -// ), -// // ... repeated -// ), -// )); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -//#getBucketCors -//try { -// $result = $cosClient->getBucketCors(array( -// // Bucket is required -// 'Bucket' => 'testbucket-1252448703', -// )); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -//#deleteBucketCors -//try { -// $result = $cosClient->deleteBucketCors(array( -// // Bucket is required -// 'Bucket' => 'testbucket-1252448703', -// )); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -//#copyobject -//try { -// $result = $cosClient->copyObject(array( -// // Bucket is required -// 'Bucket' => 'testbucket-1252448703', -// // CopySource is required -// 'CopySource' => 'lewzylu03-1252448703.cos.ap-guangzhou.myqcloud.com/tox.ini', -// // Key is required -// 'Key' => 'string', -// )); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} -//#Copy -//try { -// $result = $cosClient->Copy($bucket = 'testbucket-1252448703', -// $key = 'cmake-3.8.2为.tar.gz', -// $copysource = 'lewzylu-1252448703.cos.ap-guangzhou.myqcloud.com/cmake-3.8.2为.tar.gz'); -// print_r($result); -//} catch (\Exception $e) { -// echo "$e\n"; -//} + +#getObject +try { + $result = $cosClient->getObject(array( + 'Bucket' => 'testbucket-1252448703', + 'Key' => '11', + )); +} catch (\Exception $e) { + echo "$e\n"; +} +#deleteObject +try { + $result = $cosClient->deleteObject(array( + 'Bucket' => 'testbucket-1252448703', + 'Key' => '111.txt')); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} +#deleteObjects +try { + $result = $cosClient->deleteObjects(array( + // Bucket is required + 'Bucket' => 'string', + // Objects is required + 'Objects' => array( + array( + // Key is required + 'Key' => 'string', + 'VersionId' => 'string', + ), + // ... repeated + ), + )); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} + +#deleteBucket +try { + $result = $cosClient->deleteBucket(array( + 'Bucket' => 'testbucket-1252448703')); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} + +#headObject +try { + $result = $cosClient->headObject(array( + 'Bucket' => 'testbucket-1252448703', + 'Key' => '11')); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} + +#listObjects +try { + $result = $cosClient->headObject(array( + 'Bucket' => 'testbucket-1252448703', + 'Key' => '11')); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} + +#listObjects +try { + $result = $cosClient->listObjects(array( + 'Bucket' => 'testbucket-1252448703')); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} +#putObjectUrl +try { + $bucket = 'testbucket-1252448703'; + $key = 'hello.txt'; + $region = 'cn-south'; + $url = "/{$key}"; + $request = $cosClient->get($url); + $signedUrl = $cosClient->getObjectUrl($bucket, $key, '+10 minutes'); + echo ($signedUrl); + +} catch (\Exception $e) { + echo "$e\n"; +} +#putBucketACL +try { + $result = $cosClient->PutBucketAcl(array( + 'Bucket' => 'testbucket-1252448703', + 'Grants' => array( + array( + 'Grantee' => array( + 'DisplayName' => 'qcs::cam::uin/327874225:uin/327874225', + 'ID' => 'qcs::cam::uin/327874225:uin/327874225', + 'Type' => 'CanonicalUser', + ), + 'Permission' => 'FULL_CONTROL', + ), + // ... repeated + ), + 'Owner' => array( + 'DisplayName' => 'qcs::cam::uin/3210232098:uin/3210232098', + 'ID' => 'qcs::cam::uin/3210232098:uin/3210232098', + ),)); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} +#getBucketACL +try { + $result = $cosClient->GetBucketAcl(array( + 'Bucket' => 'testbucket-1252448703',)); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} + +#putObjectACL +try { + $result = $cosClient->PutBucketAcl(array( + 'Bucket' => 'testbucket-1252448703', + 'Grants' => array( + array( + 'Grantee' => array( + 'DisplayName' => 'qcs::cam::uin/327874225:uin/327874225', + 'ID' => 'qcs::cam::uin/327874225:uin/327874225', + 'Type' => 'CanonicalUser', + ), + 'Permission' => 'FULL_CONTROL', + ), + // ... repeated + ), + 'Owner' => array( + 'DisplayName' => 'qcs::cam::uin/3210232098:uin/3210232098', + 'ID' => 'qcs::cam::uin/3210232098:uin/3210232098', + ),)); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} + +#getObjectACL +try { + $result = $cosClient->getObjectAcl(array( + 'Bucket' => 'testbucket-1252448703', + 'Key' => '11')); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} +#putBucketLifecycle +try { + $result = $cosClient->putBucketLifecycle(array( + // Bucket is required + 'Bucket' => 'testbucket-1252448703', + // Rules is required + 'Rules' => array( + array( + 'Expiration' => array( + 'Days' => 1, + ), + 'ID' => 'id1', + 'Filter' => array( + 'Prefix' => 'documents/' + ), + // Status is required + 'Status' => 'Enabled', + 'Transition' => array( + 'Days' => 100, + 'StorageClass' => 'NEARLINE', + ), + // ... repeated + ), + ))); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} +#getBucketLifecycle +try { + $result = $cosClient->getBucketLifecycle(array( + // Bucket is required + 'Bucket' =>'testbucket-1252448703', + )); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} + +#deleteBucketLifecycle +try { + $result = $cosClient->deleteBucketLifecycle(array( + // Bucket is required + 'Bucket' =>'testbucket-1252448703', + )); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} +#putBucketCors +try { + $result = $cosClient->putBucketCors(array( + // Bucket is required + 'Bucket' => 'testbucket-1252448703', + // CORSRules is required + 'CORSRules' => array( + array( + 'ID' => '1234', + 'AllowedHeaders' => array('*'), + // AllowedMethods is required + 'AllowedMethods' => array('PUT'), + // AllowedOrigins is required + 'AllowedOrigins' => array('http://www.qq.com', ), + ), + // ... repeated + ), + )); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} +#getBucketCors +try { + $result = $cosClient->getBucketCors(array( + // Bucket is required + 'Bucket' => 'testbucket-1252448703', + )); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} +#deleteBucketCors +try { + $result = $cosClient->deleteBucketCors(array( + // Bucket is required + 'Bucket' => 'testbucket-1252448703', + )); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} +#copyobject +try { + $result = $cosClient->copyObject(array( + // Bucket is required + 'Bucket' => 'testbucket-1252448703', + // CopySource is required + 'CopySource' => 'lewzylu03-1252448703.cos.ap-guangzhou.myqcloud.com/tox.ini', + // Key is required + 'Key' => 'string', + )); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} +#Copy +try { + $result = $cosClient->Copy($bucket = 'testbucket-1252448703', + $key = 'cmake-3.8.2为.tar.gz', + $copysource = 'lewzylu-1252448703.cos.ap-guangzhou.myqcloud.com/cmake-3.8.2为.tar.gz'); + print_r($result); +} catch (\Exception $e) { + echo "$e\n"; +} diff --git a/src/Guzzle/Http/Url.php b/src/Guzzle/Http/Url.php index 6a4e7724..cd822677 100644 --- a/src/Guzzle/Http/Url.php +++ b/src/Guzzle/Http/Url.php @@ -305,7 +305,6 @@ public function normalizePath() $results[] = $segment; } } - // Combine the normalized parts and add the leading slash if needed $this->path = ($this->path[0] == '/' ? '/' : '') . implode('/', $results); diff --git a/src/Qcloud/Cos/BucketStyleListener.php b/src/Qcloud/Cos/BucketStyleListener.php index 1c4251a1..50f67f42 100644 --- a/src/Qcloud/Cos/BucketStyleListener.php +++ b/src/Qcloud/Cos/BucketStyleListener.php @@ -58,8 +58,7 @@ public function onCommandAfterPrepare(Event $event) { // Set the key and bucket on the request $request->getParams()->set('bucket', $bucket)->set('key', $key); - #echo(str_replace("%2F","/",$request->getPath())); - $request->setPath(str_replace("%2F","/",$request->getPath())); + $request->setPath(urldecode($request->getPath())); // Switch to virtual hosted bucket $request->setHost($bucket. '.' . $request->getHost()); if (!$bucket) { diff --git a/src/Qcloud/Cos/Client.php b/src/Qcloud/Cos/Client.php index d7054963..bea01d27 100644 --- a/src/Qcloud/Cos/Client.php +++ b/src/Qcloud/Cos/Client.php @@ -95,19 +95,18 @@ public function getObjectUrl($bucket, $key, $expires = null, array $args = array return $expires ? $this->createPresignedUrl($request, $expires) : $request->getUrl(); } - public function upload($bucket, $key, $body, $acl = '', $options = array()) { + public function upload($bucket, $key, $body, $options = array()) { $body = EntityBody::factory($body); $options = Collection::fromConfig(array_change_key_case($options), array( 'min_part_size' => MultipartUpload::MIN_PART_SIZE, - 'params' => array())); - + 'params' => $options)); + print_r($options); if ($body->getSize() < $options['min_part_size']) { // Perform a simple PutObject operation return $this->putObject(array( 'Bucket' => $bucket, 'Key' => $key, 'Body' => $body, - 'ACL' => $acl ) + $options['params']); } @@ -115,15 +114,14 @@ public function upload($bucket, $key, $body, $acl = '', $options = array()) { 'Bucket' => $bucket, 'Key' => $key, 'Body' => $body, - 'ACL' => $acl ) + $options['params']); return $multipartUpload->performUploading(); } - public function copy($bucket, $key, $copysource, $acl = '', $options = array()) { + public function copy($bucket, $key, $copysource, $options = array()) { $options = Collection::fromConfig(array_change_key_case($options), array( 'min_part_size' => MultipartUpload::MIN_PART_SIZE, - 'params' => array())); + 'params' => $options)); $sourcebucket = explode('-',explode('.',$copysource)[0])[0]; $sourceappid = explode('-',explode('.',$copysource)[0])[1]; $sourceregion = explode('.',$copysource)[2]; @@ -142,7 +140,6 @@ public function copy($bucket, $key, $copysource, $acl = '', $options = array()) 'Bucket' => $bucket, 'Key' => $key, 'CopySource' => $copysource, - 'ACL' => $acl ) + $options['params']); } $copy = new Copy($this, $contentlength, $copysource, $options['min_part_size'], array( @@ -150,7 +147,6 @@ public function copy($bucket, $key, $copysource, $acl = '', $options = array()) 'Key' => $key, 'ContentLength' => $contentlength, 'CopySource' => $copysource, - 'ACL' => $acl ) + $options['params']); return $copy->performUploading(); @@ -158,13 +154,13 @@ public function copy($bucket, $key, $copysource, $acl = '', $options = array()) public static function encodeKey($key) { return $key; - return str_replace('%2F', '/', rawurlencode($key)); + //return str_replace('%2F', '/', rawurlencode($key)); } public static function explodeKey($key) { // Remove a leading slash if one is found - //print_r(explode('/', $key && $key[0] == '/' ? substr($key, 1) : $key)); //return explode('/', $key && $key[0] == '/' ? substr($key, 1) : $key); return $key; + return ltrim($key, "/"); } } diff --git a/src/Qcloud/Cos/Command.php b/src/Qcloud/Cos/Command.php index e6750a9e..cf75d46f 100644 --- a/src/Qcloud/Cos/Command.php +++ b/src/Qcloud/Cos/Command.php @@ -26,10 +26,9 @@ public function createPresignedUrl($expires) protected function process() { parent::process(); - // Set the GetObject URL if using the PutObject operation if ($this->result instanceof Model && $this->getName() == 'PutObject') { - $request = $this->getRequest(); + $request = $this->getRequest();; $this->result->set('ObjectURL', $request->getUrl()); } } diff --git a/src/Qcloud/Cos/Service.php b/src/Qcloud/Cos/Service.php index 6528df2c..8f5aff5c 100644 --- a/src/Qcloud/Cos/Service.php +++ b/src/Qcloud/Cos/Service.php @@ -756,6 +756,10 @@ public static function getService() { 'required' => true, 'type' => 'string', 'location' => 'uri'), + 'CacheControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Cache-Control'), 'ContentDisposition' => array( 'type' => 'string', 'location' => 'header', diff --git a/src/Qcloud/Cos/Signature.php b/src/Qcloud/Cos/Signature.php index af352854..302d860c 100644 --- a/src/Qcloud/Cos/Signature.php +++ b/src/Qcloud/Cos/Signature.php @@ -17,6 +17,7 @@ public function __destruct() { } public function signRequest(RequestInterface $request) { + $signTime = (string)(time() - 60) . ';' . (string)(time() + 3600); $httpString = strtolower($request->getMethod()) . "\n" . urldecode($request->getPath()) . "\n\nhost=" . $request->getHost() . "\n";