Bucket.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <?php
  2. require_once __DIR__ . '/Common.php';
  3. use NOS\NosClient;
  4. use NOS\Core\NosException;
  5. $bucket = Common::getTestBucketName();
  6. $nosClient = Common::getNosClient();
  7. if (is_null($nosClient)) exit(1);
  8. //-------------------------------------------------------基本使用-------------------------------------------------
  9. $exist = $nosClient->doesBucketExist($bucket);
  10. if(!$exist)
  11. {
  12. $nosClient->createBucket($bucket, NosClient::NOS_ACL_TYPE_PRIVATE);
  13. Common::println("bucket $bucket created");
  14. }
  15. $doesExist = $nosClient->doesBucketExist($bucket);
  16. Common::println("bucket $bucket exist? " . ($doesExist ? "yes" : "no"));
  17. $bucketListInfo = $nosClient->listBuckets();
  18. $nosClient->putBucketAcl($bucket, NosClient::NOS_ACL_TYPE_PUBLIC_READ);
  19. Common::println("bucket $bucket acl put");
  20. $acl = $nosClient->getBucketAcl($bucket);
  21. Common::println("bucket $bucket acl get: " . $acl);
  22. //-----------------------------------------------------具体方法请参考以下函数-----------------------------------------------
  23. $res = doesBucketExist($nosClient, $bucket);
  24. if(!$res){
  25. createBucket($nosClient, $bucket);
  26. }
  27. putBucketAcl($nosClient, $bucket);
  28. getBucketAcl($nosClient, $bucket);
  29. listBuckets($nosClient);
  30. cleanBucket($nosClient,$bucket);
  31. deleteBucket($nosClient, $bucket);
  32. function createBucket($nosClient, $bucket)
  33. {
  34. try {
  35. $nosClient->createBucket($bucket, NosClient::NOS_ACL_TYPE_PUBLIC_READ);
  36. } catch (NosException $e) {
  37. printf(__FUNCTION__ . ": FAILED\n");
  38. printf($e->getMessage() . "\n");
  39. return;
  40. }
  41. print(__FUNCTION__ . ": OK" . "\n");
  42. }
  43. function doesBucketExist($nosClient, $bucket)
  44. {
  45. try {
  46. $res = $nosClient->doesBucketExist($bucket);
  47. } catch (NosException $e) {
  48. printf(__FUNCTION__ . ": FAILED\n");
  49. printf($e->getMessage() . "\n");
  50. return;
  51. }
  52. if ($res === true) {
  53. print(__FUNCTION__ . ": OK" . "\n");
  54. } else {
  55. print(__FUNCTION__ . ": FAILED" . "\n");
  56. }
  57. return $res;
  58. }
  59. function deleteBucket($nosClient, $bucket)
  60. {
  61. try {
  62. $nosClient->deleteBucket($bucket);
  63. } catch (NosException $e) {
  64. printf(__FUNCTION__ . ": FAILED\n");
  65. printf($e->getMessage() . "\n");
  66. return;
  67. }
  68. print(__FUNCTION__ . ": OK" . "\n");
  69. }
  70. function putBucketAcl($nosClient, $bucket)
  71. {
  72. $acl = NosClient::NOS_ACL_TYPE_PUBLIC_READ;
  73. try {
  74. $nosClient->putBucketAcl($bucket, $acl);
  75. } catch (NosException $e) {
  76. printf(__FUNCTION__ . ": FAILED\n");
  77. printf($e->getMessage() . "\n");
  78. return;
  79. }
  80. print(__FUNCTION__ . ": OK" . "\n");
  81. }
  82. function getBucketAcl($nosClient, $bucket)
  83. {
  84. try {
  85. $res = $nosClient->getBucketAcl($bucket);
  86. } catch (NosException $e) {
  87. printf(__FUNCTION__ . ": FAILED\n");
  88. printf($e->getMessage() . "\n");
  89. return;
  90. }
  91. print(__FUNCTION__ . ": OK" . "\n");
  92. print('acl: ' . $res);
  93. }
  94. function listBuckets($nosClient)
  95. {
  96. $bucketList = null;
  97. try {
  98. $bucketListInfo = $nosClient->listBuckets();
  99. } catch (NosException $e) {
  100. printf(__FUNCTION__ . ": FAILED\n");
  101. printf($e->getMessage() . "\n");
  102. return;
  103. }
  104. print(__FUNCTION__ . ": OK" . "\n");
  105. $bucketList = $bucketListInfo->getBucketList();
  106. foreach ($bucketList as $bucket) {
  107. print($bucket->getName() . "\t" . $bucket->getCreatedate() . "\n");
  108. }
  109. }
  110. function cleanBucket($nosClient,$bucket) {
  111. if (is_null($nosClient)) {
  112. exit(1);
  113. }
  114. try {
  115. $exist = $nosClient->doesBucketExist($bucket);
  116. } catch (NosException $e) {
  117. printf(__FUNCTION__ . ": FAILED\n");
  118. printf($e->getMessage() . "\n");
  119. return;
  120. }
  121. if (! $exist) {
  122. return;
  123. }
  124. try {
  125. while (true) {
  126. $needDeletes = array();
  127. $objects = $nosClient->listObjects($bucket);
  128. foreach ($objects->getObjectList() as $object) {
  129. $needDeletes[] = $object->getKey();
  130. }
  131. if (count($needDeletes) == 0) {
  132. break;
  133. }
  134. $nosClient->deleteObjects($bucket, $needDeletes);
  135. }
  136. } catch (NosException $e) {
  137. printf(__FUNCTION__ . ": FAILED\n");
  138. printf($e->getMessage() . "\n");
  139. return;
  140. }
  141. try {
  142. $uploads = $nosClient->listMultipartUploads($bucket);
  143. foreach ($uploads->getUploads() as $upload) {
  144. $nosClient->abortMultipartUpload($bucket, $upload->getKey(), $upload->getUploadId());
  145. }
  146. } catch (NosException $e) {
  147. printf(__FUNCTION__ . ": FAILED\n");
  148. printf($e->getMessage() . "\n");
  149. return;
  150. }
  151. printf(__FUNCTION__ . ": Clean Bucket Success\n");
  152. }