Object.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765
  1. <?php
  2. require_once __DIR__ . '/Common.php';
  3. use OSS\OssClient;
  4. use OSS\Core\OssException;
  5. use OSS\Model\RestoreConfig;
  6. $bucket = Common::getBucketName();
  7. $ossClient = Common::getOssClient();
  8. if (is_null($ossClient)) exit(1);
  9. //******************************* Simple usage ***************************************************************
  10. // Upload the in-memory string (hi, oss) to an OSS file
  11. $result = $ossClient->putObject($bucket, "b.file", "hi, oss");
  12. Common::println("b.file is created");
  13. Common::println($result['x-oss-request-id']);
  14. Common::println($result['etag']);
  15. Common::println($result['content-md5']);
  16. Common::println($result['body']);
  17. // Uploads a local file to an OSS file
  18. $result = $ossClient->uploadFile($bucket, "c.file", __FILE__);
  19. Common::println("c.file is created");
  20. Common::println("b.file is created");
  21. Common::println($result['x-oss-request-id']);
  22. Common::println($result['etag']);
  23. Common::println($result['content-md5']);
  24. Common::println($result['body']);
  25. // Download an oss object as an in-memory variable
  26. $content = $ossClient->getObject($bucket, "b.file");
  27. Common::println("b.file is fetched, the content is: " . $content);
  28. // Add a symlink to an object
  29. $content = $ossClient->putSymlink($bucket, "test-symlink", "b.file");
  30. Common::println("test-symlink is created");
  31. Common::println($result['x-oss-request-id']);
  32. Common::println($result['etag']);
  33. // Get a symlink
  34. $content = $ossClient->getSymlink($bucket, "test-symlink");
  35. Common::println("test-symlink refer to : " . $content[OssClient::OSS_SYMLINK_TARGET]);
  36. // Download an object to a local file.
  37. $options = array(
  38. OssClient::OSS_FILE_DOWNLOAD => "./c.file.localcopy",
  39. );
  40. $ossClient->getObject($bucket, "c.file", $options);
  41. Common::println("b.file is fetched to the local file: c.file.localcopy");
  42. Common::println("b.file is created");
  43. // Restore Object
  44. $day = 3;
  45. $tier = 'Expedited';
  46. $config = new RestoreConfig($day,$tier);
  47. $options = array(
  48. OssClient::OSS_RESTORE_CONFIG => $config
  49. );
  50. $ossClient->restoreObject($bucket, 'b.file',$options);
  51. // Copy an object
  52. $result = $ossClient->copyObject($bucket, "c.file", $bucket, "c.file.copy");
  53. Common::println("lastModifiedTime: " . $result[0]);
  54. Common::println("ETag: " . $result[1]);
  55. // Check whether an object exists
  56. $doesExist = $ossClient->doesObjectExist($bucket, "c.file.copy");
  57. Common::println("file c.file.copy exist? " . ($doesExist ? "yes" : "no"));
  58. // Delete an object
  59. $result = $ossClient->deleteObject($bucket, "c.file.copy");
  60. Common::println("c.file.copy is deleted");
  61. Common::println("b.file is created");
  62. Common::println($result['x-oss-request-id']);
  63. // Check whether an object exists
  64. $doesExist = $ossClient->doesObjectExist($bucket, "c.file.copy");
  65. Common::println("file c.file.copy exist? " . ($doesExist ? "yes" : "no"));
  66. // Delete multiple objects in batch
  67. $result = $ossClient->deleteObjects($bucket, array("b.file", "c.file"));
  68. foreach($result as $object)
  69. Common::println($object);
  70. sleep(2);
  71. unlink("c.file.localcopy");
  72. // Normal upload and download speed limit
  73. $object= "b.file";
  74. $content = "hello world";
  75. // The speed limit is 100 KB/s, which is 819200 bit/s.
  76. $options = array(
  77. OssClient::OSS_HEADERS => array(
  78. OssClient::OSS_TRAFFIC_LIMIT => 819200,
  79. ));
  80. // Speed limit upload.
  81. $ossClient->putObject($bucket, $object, $content, $options);
  82. // Speed limit download.
  83. $ossClient->getObject($bucket, $object, $options);
  84. // Signed URL upload and download speed limit
  85. // Create a URL for uploading with a limited rate, and the validity period is 60s.
  86. $timeout = 60;
  87. $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT", $options);
  88. Common::println("b.file speed limit upload url:".$signedUrl.PHP_EOL);
  89. // Create a URL for speed-limited downloads, with a validity period of 120s.
  90. $timeout = 120;
  91. $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "GET", $options);
  92. Common::println("b.file speed limit download url:".$signedUrl.PHP_EOL);
  93. //******************************* For complete usage, see the following functions ****************************************************
  94. listObjects($ossClient, $bucket);
  95. listObjectsV2($ossClient, $bucket);
  96. listAllObjects($ossClient, $bucket);
  97. createObjectDir($ossClient, $bucket);
  98. putObject($ossClient, $bucket);
  99. uploadFile($ossClient, $bucket);
  100. getObject($ossClient, $bucket);
  101. getObjectToLocalFile($ossClient, $bucket);
  102. copyObject($ossClient, $bucket);
  103. modifyMetaForObject($ossClient, $bucket);
  104. getObjectMeta($ossClient, $bucket);
  105. deleteObject($ossClient, $bucket);
  106. deleteObjects($ossClient, $bucket);
  107. doesObjectExist($ossClient, $bucket);
  108. getSymlink($ossClient, $bucket);
  109. putSymlink($ossClient, $bucket);
  110. putObjectSpeed($ossClient, $bucket);
  111. getObjectSpeed($ossClient, $bucket);
  112. signUrlSpeedUpload($ossClient, $bucket);
  113. signUrlSpeedDownload($ossClient, $bucket);
  114. restoreObject($ossClient,$bucket);
  115. /**
  116. * Create a 'virtual' folder
  117. *
  118. * @param OssClient $ossClient OssClient instance
  119. * @param string $bucket bucket name
  120. * @return null
  121. */
  122. function createObjectDir($ossClient, $bucket)
  123. {
  124. try {
  125. $ossClient->createObjectDir($bucket, "dir");
  126. } catch (OssException $e) {
  127. printf(__FUNCTION__ . ": FAILED\n");
  128. printf($e->getMessage() . "\n");
  129. return;
  130. }
  131. print(__FUNCTION__ . ": OK" . "\n");
  132. }
  133. /**
  134. * Upload in-memory data to oss
  135. *
  136. * Simple upload---upload specified in-memory data to an OSS object
  137. *
  138. * @param OssClient $ossClient OssClient instance
  139. * @param string $bucket bucket name
  140. * @return null
  141. */
  142. function putObject($ossClient, $bucket)
  143. {
  144. $object = "oss-php-sdk-test/upload-test-object-name.txt";
  145. $content = file_get_contents(__FILE__);
  146. $options = array();
  147. try {
  148. $ossClient->putObject($bucket, $object, $content, $options);
  149. } catch (OssException $e) {
  150. printf(__FUNCTION__ . ": FAILED\n");
  151. printf($e->getMessage() . "\n");
  152. return;
  153. }
  154. print(__FUNCTION__ . ": OK" . "\n");
  155. }
  156. /**
  157. * Uploads a local file to OSS
  158. *
  159. * @param OssClient $ossClient OssClient instance
  160. * @param string $bucket bucket name
  161. * @return null
  162. */
  163. function uploadFile($ossClient, $bucket)
  164. {
  165. $object = "oss-php-sdk-test/upload-test-object-name.txt";
  166. $filePath = __FILE__;
  167. $options = array();
  168. try {
  169. $ossClient->uploadFile($bucket, $object, $filePath, $options);
  170. } catch (OssException $e) {
  171. printf(__FUNCTION__ . ": FAILED\n");
  172. printf($e->getMessage() . "\n");
  173. return;
  174. }
  175. print(__FUNCTION__ . ": OK" . "\n");
  176. }
  177. /**
  178. * Lists all files and folders in the bucket.
  179. * Note if there's more items than the max-keys specified, the caller needs to use the nextMarker returned as the value for the next call's maker paramter.
  180. * Loop through all the items returned from ListObjects.
  181. *
  182. * @param OssClient $ossClient OssClient instance
  183. * @param string $bucket bucket name
  184. * @return null
  185. */
  186. function listObjects($ossClient, $bucket)
  187. {
  188. $prefix = 'oss-php-sdk-test/';
  189. $delimiter = '/';
  190. $nextMarker = '';
  191. $maxkeys = 1000;
  192. $options = array(
  193. 'delimiter' => $delimiter,
  194. 'prefix' => $prefix,
  195. 'max-keys' => $maxkeys,
  196. 'marker' => $nextMarker,
  197. );
  198. try {
  199. $listObjectInfo = $ossClient->listObjects($bucket, $options);
  200. printf("Bucket Name: %s". "\n",$listObjectInfo->getBucketName());
  201. printf("Prefix: %s". "\n",$listObjectInfo->getPrefix());
  202. printf("Marker: %s". "\n",$listObjectInfo->getMarker());
  203. printf("Next Marker: %s". "\n",$listObjectInfo->getNextMarker());
  204. printf("Max Keys: %s". "\n",$listObjectInfo->getMaxKeys());
  205. printf("Delimiter: %s". "\n",$listObjectInfo->getDelimiter());
  206. printf("Is Truncated: %s". "\n",$listObjectInfo->getIsTruncated());
  207. $objectList = $listObjectInfo->getObjectList(); // object list
  208. $prefixList = $listObjectInfo->getPrefixList(); // directory list
  209. if (!empty($objectList)) {
  210. print("objectList:\n");
  211. foreach ($objectList as $objectInfo) {
  212. printf("Object Name: %s". "\n",$objectInfo->getKey());
  213. printf("Object Size: %s". "\n",$objectInfo->getSize());
  214. printf("Object Type: %s". "\n",$objectInfo->getType());
  215. printf("Object ETag: %s". "\n",$objectInfo->getETag());
  216. printf("Object Last Modified: %s". "\n",$objectInfo->getLastModified());
  217. printf("Object Storage Class: %s". "\n",$objectInfo->getStorageClass());
  218. if ($objectInfo->getRestoreInfo()){
  219. printf("Restore Info: %s". "\n",$objectInfo->getRestoreInfo() );
  220. }
  221. if($objectInfo->getOwner()){
  222. printf("Owner Id:".$objectInfo->getOwner()->getId() . "\n");
  223. printf("Owner Name:".$objectInfo->getOwner()->getDisplayName() . "\n");
  224. }
  225. }
  226. }
  227. if (!empty($prefixList)) {
  228. print("prefixList: \n");
  229. foreach ($prefixList as $prefixInfo) {
  230. printf("Common Prefix:%s\n",$prefixInfo->getPrefix());
  231. }
  232. }
  233. } catch (OssException $e) {
  234. printf(__FUNCTION__ . ": FAILED\n");
  235. printf($e->getMessage() . "\n");
  236. return;
  237. }
  238. print(__FUNCTION__ . ": OK" . "\n");
  239. }
  240. /**
  241. * Lists all files and folders in the bucket.
  242. * Note if there's more items than the max-keys specified, the caller needs to use the nextMarker returned as the value for the next call's maker paramter.
  243. * Loop through all the items returned from ListObjects.
  244. *
  245. * @param OssClient $ossClient OssClient instance
  246. * @param string $bucket bucket name
  247. * @return null
  248. */
  249. function listObjectsV2($ossClient, $bucket)
  250. {
  251. $prefix = 'oss-php-sdk-test/';
  252. $delimiter = '/';
  253. $maxkeys = 1000;
  254. $options = array(
  255. 'delimiter' => $delimiter,
  256. 'prefix' => $prefix,
  257. 'max-keys' => $maxkeys,
  258. 'start-after' =>'test-object',
  259. 'fetch-owner' =>'true',
  260. );
  261. try {
  262. $listObjectInfo = $ossClient->listObjectsV2($bucket, $options);
  263. printf("Bucket Name: %s". "\n",$listObjectInfo->getBucketName());
  264. printf("Prefix: %s". "\n",$listObjectInfo->getPrefix());
  265. printf("Next Continuation Token: %s". "\n",$listObjectInfo->getNextContinuationToken());
  266. printf("Continuation Token: %s". "\n",$listObjectInfo->getContinuationToken());
  267. printf("Max Keys: %s". "\n",$listObjectInfo->getMaxKeys());
  268. printf("Key Count: %s". "\n",$listObjectInfo->getKeyCount());
  269. printf("Delimiter: %s". "\n",$listObjectInfo->getDelimiter());
  270. printf("Is Truncated: %s". "\n",$listObjectInfo->getIsTruncated());
  271. printf("Start After: %s". "\n",$listObjectInfo->getStartAfter());
  272. $objectList = $listObjectInfo->getObjectList(); // object list
  273. $prefixList = $listObjectInfo->getPrefixList(); // directory list
  274. if (!empty($objectList)) {
  275. print("objectList:\n");
  276. foreach ($objectList as $objectInfo) {
  277. printf("Object Name: %s". "\n",$objectInfo->getKey());
  278. printf("Object Size: %s". "\n",$objectInfo->getSize());
  279. printf("Object Type: %s". "\n",$objectInfo->getType());
  280. printf("Object ETag: %s". "\n",$objectInfo->getETag());
  281. printf("Object Last Modified: %s". "\n",$objectInfo->getLastModified());
  282. printf("Object Storage Class: %s". "\n",$objectInfo->getStorageClass());
  283. if ($objectInfo->getRestoreInfo()){
  284. printf("Restore Info: %s". "\n",$objectInfo->getRestoreInfo() );
  285. }
  286. if($objectInfo->getOwner()){
  287. printf("Owner Id:".$objectInfo->getOwner()->getId() . "\n");
  288. printf("Owner Name:".$objectInfo->getOwner()->getDisplayName() . "\n");
  289. }
  290. }
  291. }
  292. if (!empty($prefixList)) {
  293. print("prefixList: \n");
  294. foreach ($prefixList as $prefixInfo) {
  295. printf("Common Prefix:%s\n",$prefixInfo->getPrefix());
  296. }
  297. }
  298. } catch (OssException $e) {
  299. printf(__FUNCTION__ . ": FAILED\n");
  300. printf($e->getMessage() . "\n");
  301. return;
  302. }
  303. print(__FUNCTION__ . ": OK" . "\n");
  304. }
  305. /**
  306. * Lists all folders and files under the bucket. Use nextMarker repeatedly to get all objects.
  307. *
  308. * @param OssClient $ossClient OssClient instance
  309. * @param string $bucket bucket name
  310. * @return null
  311. */
  312. function listAllObjects($ossClient, $bucket)
  313. {
  314. // Create dir/obj 'folder' and put some files into it.
  315. for ($i = 0; $i < 100; $i += 1) {
  316. $ossClient->putObject($bucket, "dir/obj" . strval($i), "hi");
  317. $ossClient->createObjectDir($bucket, "dir/obj" . strval($i));
  318. }
  319. $prefix = 'dir/';
  320. $delimiter = '/';
  321. $nextMarker = '';
  322. $maxkeys = 30;
  323. while (true) {
  324. $options = array(
  325. 'delimiter' => $delimiter,
  326. 'prefix' => $prefix,
  327. 'max-keys' => $maxkeys,
  328. 'marker' => $nextMarker,
  329. );
  330. var_dump($options);
  331. try {
  332. $listObjectInfo = $ossClient->listObjects($bucket, $options);
  333. } catch (OssException $e) {
  334. printf(__FUNCTION__ . ": FAILED\n");
  335. printf($e->getMessage() . "\n");
  336. return;
  337. }
  338. // Get the nextMarker, and it would be used as the next call's marker parameter to resume from the last call
  339. $nextMarker = $listObjectInfo->getNextMarker();
  340. $listObject = $listObjectInfo->getObjectList();
  341. $listPrefix = $listObjectInfo->getPrefixList();
  342. var_dump(count($listObject));
  343. var_dump(count($listPrefix));
  344. if ($nextMarker === '') {
  345. break;
  346. }
  347. }
  348. }
  349. /**
  350. * Get the content of an object.
  351. *
  352. * @param OssClient $ossClient OssClient instance
  353. * @param string $bucket bucket name
  354. * @return null
  355. */
  356. function getObject($ossClient, $bucket)
  357. {
  358. $object = "oss-php-sdk-test/upload-test-object-name.txt";
  359. $options = array();
  360. try {
  361. $content = $ossClient->getObject($bucket, $object, $options);
  362. } catch (OssException $e) {
  363. printf(__FUNCTION__ . ": FAILED\n");
  364. printf($e->getMessage() . "\n");
  365. return;
  366. }
  367. print(__FUNCTION__ . ": OK" . "\n");
  368. if (file_get_contents(__FILE__) === $content) {
  369. print(__FUNCTION__ . ": FileContent checked OK" . "\n");
  370. } else {
  371. print(__FUNCTION__ . ": FileContent checked FAILED" . "\n");
  372. }
  373. }
  374. /**
  375. * Put symlink
  376. *
  377. * @param OssClient $ossClient The Instance of OssClient
  378. * @param string $bucket bucket name
  379. * @return null
  380. */
  381. function putSymlink($ossClient, $bucket)
  382. {
  383. $symlink = "test-samples-symlink";
  384. $object = "test-samples-object";
  385. try {
  386. $ossClient->putObject($bucket, $object, 'test-content');
  387. $ossClient->putSymlink($bucket, $symlink, $object);
  388. $content = $ossClient->getObject($bucket, $symlink);
  389. } catch (OssException $e) {
  390. printf(__FUNCTION__ . ": FAILED\n");
  391. printf($e->getMessage() . "\n");
  392. return;
  393. }
  394. print(__FUNCTION__ . ": OK" . "\n");
  395. if ($content == 'test-content') {
  396. print(__FUNCTION__ . ": putSymlink checked OK" . "\n");
  397. } else {
  398. print(__FUNCTION__ . ": putSymlink checked FAILED" . "\n");
  399. }
  400. }
  401. /**
  402. * Get symlink
  403. *
  404. * @param OssClient $ossClient OssClient instance
  405. * @param string $bucket bucket name
  406. * @return null
  407. */
  408. function getSymlink($ossClient, $bucket)
  409. {
  410. $symlink = "test-samples-symlink";
  411. $object = "test-samples-object";
  412. try {
  413. $ossClient->putObject($bucket, $object, 'test-content');
  414. $ossClient->putSymlink($bucket, $symlink, $object);
  415. $content = $ossClient->getSymlink($bucket, $symlink);
  416. } catch (OssException $e) {
  417. printf(__FUNCTION__ . ": FAILED\n");
  418. printf($e->getMessage() . "\n");
  419. return;
  420. }
  421. print(__FUNCTION__ . ": OK" . "\n");
  422. if ($content[OssClient::OSS_SYMLINK_TARGET]) {
  423. print(__FUNCTION__ . ": getSymlink checked OK" . "\n");
  424. } else {
  425. print(__FUNCTION__ . ": getSymlink checked FAILED" . "\n");
  426. }
  427. }
  428. /**
  429. * Get_object_to_local_file
  430. *
  431. * Get object
  432. * Download object to a specified file.
  433. *
  434. * @param OssClient $ossClient OssClient instance
  435. * @param string $bucket bucket name
  436. * @return null
  437. */
  438. function getObjectToLocalFile($ossClient, $bucket)
  439. {
  440. $object = "oss-php-sdk-test/upload-test-object-name.txt";
  441. $localfile = "upload-test-object-name.txt";
  442. $options = array(
  443. OssClient::OSS_FILE_DOWNLOAD => $localfile,
  444. );
  445. try {
  446. $ossClient->getObject($bucket, $object, $options);
  447. } catch (OssException $e) {
  448. printf(__FUNCTION__ . ": FAILED\n");
  449. printf($e->getMessage() . "\n");
  450. return;
  451. }
  452. print(__FUNCTION__ . ": OK, please check localfile: 'upload-test-object-name.txt'" . "\n");
  453. if (file_get_contents($localfile) === file_get_contents(__FILE__)) {
  454. print(__FUNCTION__ . ": FileContent checked OK" . "\n");
  455. } else {
  456. print(__FUNCTION__ . ": FileContent checked FAILED" . "\n");
  457. }
  458. if (file_exists($localfile)) {
  459. unlink($localfile);
  460. }
  461. }
  462. /**
  463. * Copy object
  464. * When the source object is same as the target one, copy operation will just update the metadata.
  465. *
  466. * @param OssClient $ossClient OssClient instance
  467. * @param string $bucket bucket name
  468. * @return null
  469. */
  470. function copyObject($ossClient, $bucket)
  471. {
  472. $fromBucket = $bucket;
  473. $fromObject = "oss-php-sdk-test/upload-test-object-name.txt";
  474. $toBucket = $bucket;
  475. $toObject = $fromObject . '.copy';
  476. $options = array();
  477. try {
  478. $ossClient->copyObject($fromBucket, $fromObject, $toBucket, $toObject, $options);
  479. } catch (OssException $e) {
  480. printf(__FUNCTION__ . ": FAILED\n");
  481. printf($e->getMessage() . "\n");
  482. return;
  483. }
  484. print(__FUNCTION__ . ": OK" . "\n");
  485. }
  486. /**
  487. * Update Object Meta
  488. * it leverages the feature of copyObject: when the source object is just the target object, the metadata could be updated via copy
  489. *
  490. * @param OssClient $ossClient OssClient instance
  491. * @param string $bucket bucket name
  492. * @return null
  493. */
  494. function modifyMetaForObject($ossClient, $bucket)
  495. {
  496. $fromBucket = $bucket;
  497. $fromObject = "oss-php-sdk-test/upload-test-object-name.txt";
  498. $toBucket = $bucket;
  499. $toObject = $fromObject;
  500. $copyOptions = array(
  501. OssClient::OSS_HEADERS => array(
  502. 'Cache-Control' => 'max-age=60',
  503. 'Content-Disposition' => 'attachment; filename="xxxxxx"',
  504. ),
  505. );
  506. try {
  507. $ossClient->copyObject($fromBucket, $fromObject, $toBucket, $toObject, $copyOptions);
  508. } catch (OssException $e) {
  509. printf(__FUNCTION__ . ": FAILED\n");
  510. printf($e->getMessage() . "\n");
  511. return;
  512. }
  513. print(__FUNCTION__ . ": OK" . "\n");
  514. }
  515. /**
  516. * Get object meta, that is, getObjectMeta
  517. *
  518. * @param OssClient $ossClient OssClient instance
  519. * @param string $bucket bucket name
  520. * @return null
  521. */
  522. function getObjectMeta($ossClient, $bucket)
  523. {
  524. $object = "oss-php-sdk-test/upload-test-object-name.txt";
  525. try {
  526. $objectMeta = $ossClient->getObjectMeta($bucket, $object);
  527. } catch (OssException $e) {
  528. printf(__FUNCTION__ . ": FAILED\n");
  529. printf($e->getMessage() . "\n");
  530. return;
  531. }
  532. print(__FUNCTION__ . ": OK" . "\n");
  533. if (isset($objectMeta[strtolower('Content-Disposition')]) &&
  534. 'attachment; filename="xxxxxx"' === $objectMeta[strtolower('Content-Disposition')]
  535. ) {
  536. print(__FUNCTION__ . ": ObjectMeta checked OK" . "\n");
  537. } else {
  538. print(__FUNCTION__ . ": ObjectMeta checked FAILED" . "\n");
  539. }
  540. }
  541. /**
  542. * Delete an object
  543. *
  544. * @param OssClient $ossClient OssClient instance
  545. * @param string $bucket bucket name
  546. * @return null
  547. */
  548. function deleteObject($ossClient, $bucket)
  549. {
  550. $object = "oss-php-sdk-test/upload-test-object-name.txt";
  551. try {
  552. $ossClient->deleteObject($bucket, $object);
  553. } catch (OssException $e) {
  554. printf(__FUNCTION__ . ": FAILED\n");
  555. printf($e->getMessage() . "\n");
  556. return;
  557. }
  558. print(__FUNCTION__ . ": OK" . "\n");
  559. }
  560. /**
  561. * Delete multiple objects in batch
  562. *
  563. * @param OssClient $ossClient OssClient instance
  564. * @param string $bucket bucket name
  565. * @return null
  566. */
  567. function deleteObjects($ossClient, $bucket)
  568. {
  569. $objects = array();
  570. $objects[] = "oss-php-sdk-test/upload-test-object-name.txt";
  571. $objects[] = "oss-php-sdk-test/upload-test-object-name.txt.copy";
  572. try {
  573. $ossClient->deleteObjects($bucket, $objects);
  574. } catch (OssException $e) {
  575. printf(__FUNCTION__ . ": FAILED\n");
  576. printf($e->getMessage() . "\n");
  577. return;
  578. }
  579. print(__FUNCTION__ . ": OK" . "\n");
  580. }
  581. /**
  582. * Check whether an object exists
  583. *
  584. * @param OssClient $ossClient OssClient instance
  585. * @param string $bucket bucket name
  586. * @return null
  587. */
  588. function doesObjectExist($ossClient, $bucket)
  589. {
  590. $object = "oss-php-sdk-test/upload-test-object-name.txt";
  591. try {
  592. $exist = $ossClient->doesObjectExist($bucket, $object);
  593. } catch (OssException $e) {
  594. printf(__FUNCTION__ . ": FAILED\n");
  595. printf($e->getMessage() . "\n");
  596. return;
  597. }
  598. print(__FUNCTION__ . ": OK" . "\n");
  599. var_dump($exist);
  600. }
  601. /**
  602. * Speed limit upload.
  603. *
  604. * @param OssClient $ossClient OssClient instance
  605. * @param string $bucket bucket name
  606. * @return null
  607. */
  608. function putObjectSpeed($ossClient, $bucket)
  609. {
  610. $object = "upload-test-object-name.txt";
  611. $content = file_get_contents(__FILE__);
  612. $options = array(
  613. OssClient::OSS_HEADERS => array(
  614. OssClient::OSS_TRAFFIC_LIMIT => 819200,
  615. ));
  616. try {
  617. $ossClient->putObject($bucket, $object, $content, $options);
  618. } catch (OssException $e) {
  619. printf(__FUNCTION__ . ": FAILED\n");
  620. printf($e->getMessage() . "\n");
  621. return;
  622. }
  623. print(__FUNCTION__ . ": OK" . "\n");
  624. }
  625. /**
  626. * Speed limit download.
  627. *
  628. * @param OssClient $ossClient OssClient instance
  629. * @param string $bucket bucket name
  630. * @return null
  631. */
  632. function getObjectSpeed($ossClient, $bucket)
  633. {
  634. $object = "upload-test-object-name.txt";
  635. $options = array(
  636. OssClient::OSS_HEADERS => array(
  637. OssClient::OSS_TRAFFIC_LIMIT => 819200,
  638. ));
  639. try {
  640. $ossClient->getObject($bucket, $object, $options);
  641. } catch (OssException $e) {
  642. printf(__FUNCTION__ . ": FAILED\n");
  643. printf($e->getMessage() . "\n");
  644. return;
  645. }
  646. print(__FUNCTION__ . ": OK" . "\n");
  647. }
  648. /**
  649. * Speed limit download.
  650. *
  651. * @param OssClient $ossClient OssClient instance
  652. * @param string $bucket bucket name
  653. * @return null
  654. */
  655. function signUrlSpeedUpload($ossClient, $bucket)
  656. {
  657. $object = "upload-test-object-name.txt";
  658. $timeout = 120;
  659. $options = array(
  660. OssClient::OSS_TRAFFIC_LIMIT => 819200,
  661. );
  662. $timeout = 60;
  663. $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT", $options);
  664. print($signedUrl);
  665. }
  666. /**
  667. * Speed limit download.
  668. *
  669. * @param OssClient $ossClient OssClient instance
  670. * @param string $bucket bucket name
  671. * @return null
  672. */
  673. function signUrlSpeedDownload($ossClient, $bucket)
  674. {
  675. $object = "upload-test-object-name.txt";
  676. $timeout = 120;
  677. $options = array(
  678. OssClient::OSS_TRAFFIC_LIMIT => 819200,
  679. );
  680. $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "GET", $options);
  681. print($signedUrl);
  682. print(__FUNCTION__ . ": OK" . "\n");
  683. }
  684. /**
  685. * Restore object
  686. *
  687. * @param OssClient $ossClient OssClient instance
  688. * @param string $bucket bucket name
  689. * @return null
  690. */
  691. function restoreObject($ossClient, $bucket)
  692. {
  693. $object = "oss-php-sdk-test/upload-test-object-name.txt";
  694. $day = 3;
  695. $tier = 'Expedited';
  696. $config = new RestoreConfig($day,$tier);
  697. $options = array(
  698. OssClient::OSS_RESTORE_CONFIG => $config
  699. );
  700. try {
  701. $ossClient->restoreObject($bucket, $object,$options);
  702. } catch (OssException $e) {
  703. printf(__FUNCTION__ . ": FAILED\n");
  704. printf($e->getMessage() . "\n");
  705. return;
  706. }
  707. print(__FUNCTION__ . ": OK" . "\n");
  708. }