全部產品
Search
文件中心

:管理檔案

更新時間:Oct 19, 2018

您可以通過一系列的介面管理儲存空間(Bucket)下的檔案(Object)。管理檔案的完整代碼請參見:GitHub

判斷檔案是否存在

以下代碼用於判斷指定的檔案是否存在:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $bucket= "<yourBucketName>";
  16. $object = "<yourObjectName>";
  17. try{
  18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  19. $exist = $ossClient->doesObjectExist($bucket, $object);
  20. } catch(OssException $e) {
  21. printf(__FUNCTION__ . ": FAILED\n");
  22. printf($e->getMessage() . "\n");
  23. return;
  24. }
  25. print(__FUNCTION__ . ": OK" . "\n");
  26. var_dump($exist);

檔案存取權限

檔案的存取權限(ACL)有以下四種:

存取權限 描述 存取權限值
繼承Bucket 檔案遵循儲存空間的存取權限。 default
私有 檔案的擁有者和授權使用者有該檔案的讀寫權限,其他使用者沒有許可權操作該檔案。 private
公共讀 檔案的擁有者和授權使用者有該檔案的讀寫權限,其他使用者只有檔案的讀許可權。請謹慎使用該許可權。 public-read
公共讀寫 所有使用者都有該檔案的讀寫權限。請謹慎使用該許可權。 public-read-write

檔案的存取權限優先順序高於儲存空間的存取權限。例如儲存空間的存取權限是私有,而檔案的存取權限是公共讀寫,則所有使用者都有該檔案的讀寫權限。如果某個檔案沒有設定過存取權限,則遵循儲存空間的存取權限。

設定檔案存取權限

以下代碼用於設定指定檔案的存取權限:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $bucket= "<yourBucketName>";
  16. $object = "<yourObjectName>";
  17. // 設定檔案的存取權限為公共讀,預設為繼承Bucket。
  18. $acl = "public-read";
  19. try {
  20. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  21. $ossClient->putObjectAcl($bucket, $object, $acl);
  22. } catch (OssException $e) {
  23. printf(__FUNCTION__ . ": FAILED\n");
  24. printf($e->getMessage() . "\n");
  25. return;
  26. }
  27. print(__FUNCTION__ . ": OK" . "\n");

獲取檔案存取權限

以下代碼用於獲取指定檔案的存取權限:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $bucket= "<yourBucketName>";
  16. $object = "<yourObjectName>";
  17. try {
  18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  19. $objectAcl = $ossClient->getObjectAcl($bucket, $object);
  20. } catch (OssException $e) {
  21. printf(__FUNCTION__ . ": FAILED\n");
  22. printf($e->getMessage() . "\n");
  23. return;
  24. }
  25. print(__FUNCTION__ . ": OK" . "\n");
  26. var_dump($objectAcl);

檔案元資訊

檔案元資訊(Object Meta)詳情請參見開發指南中的檔案元資訊

設定檔案元資訊

以下代碼用於設定檔案元資訊:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $bucket= "<yourBucketName>";
  16. $object = "<yourObjectName>";
  17. $content = file_get_contents(__FILE__);
  18. $options = array(
  19. OssClient::OSS_HEADERS => array(
  20. 'Expires' => '2012-10-01 08:00:00',
  21. 'Content-Disposition' => 'attachment; filename="xxxxxx"',
  22. 'x-oss-meta-self-define-title' => 'user define meta info',
  23. ));
  24. try{
  25. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  26. $ossClient->putObject($bucket, $object, $content, $options);
  27. } catch(OssException $e) {
  28. printf(__FUNCTION__ . ": FAILED\n");
  29. printf($e->getMessage() . "\n");
  30. return;
  31. }
  32. print(__FUNCTION__ . ": OK" . "\n");

修改檔案元資訊

以下代碼用於修改檔案元資訊:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. /// 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $fromBucket = "<yourFromBucketName>";
  16. $fromObject = "<yourFromObjectName>";
  17. $toBucket = "<yourToBucketName>";
  18. $toObject = "<yourToObjectName>";
  19. $copyOptions = array(
  20. OssClient::OSS_HEADERS => array(
  21. 'Expires' => '2018-10-01 08:00:00',
  22. 'Content-Disposition' => 'attachment; filename="xxxxxx"',
  23. 'x-oss-meta-location' => 'location',
  24. ),
  25. );
  26. try{
  27. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  28. $ossClient->copyObject($fromBucket, $fromObject, $toBucket, $toObject, $copyOptions);
  29. } catch(OssException $e) {
  30. printf(__FUNCTION__ . ": FAILED\n");
  31. printf($e->getMessage() . "\n");
  32. return;
  33. }
  34. print(__FUNCTION__ . ": OK" . "\n");

獲取檔案元資訊

以下代碼用於獲取檔案元資訊:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $bucket= "<yourBucketName>";
  16. $object = "<yourObjectName>";
  17. try {
  18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  19. $objectMeta = $ossClient->getObjectMeta($bucket, $object);
  20. } catch (OssException $e) {
  21. printf(__FUNCTION__ . ": FAILED\n");
  22. printf($e->getMessage() . "\n");
  23. return;
  24. }
  25. print(__FUNCTION__ . ": OK" . "\n");
  26. if (isset($objectMeta[strtolower('Content-Disposition')]) &&
  27. 'attachment; filename="xxxxxx"' === $objectMeta[strtolower('Content-Disposition')]
  28. ) {
  29. print(__FUNCTION__ . ": ObjectMeta checked OK" . "\n");
  30. } else {
  31. print(__FUNCTION__ . ": ObjectMeta checked FAILED" . "\n");
  32. }

列舉檔案

列舉所有檔案

以下代碼用於列舉指定儲存空間下的所有檔案:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $bucket= "<yourBucketName>";
  16. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  17. while (true) {
  18. try {
  19. $listObjectInfo = $ossClient->listObjects($bucket, $options);
  20. } catch (OssException $e) {
  21. printf(__FUNCTION__ . ": FAILED\n");
  22. printf($e->getMessage() . "\n");
  23. return;
  24. }
  25. // 得到nextMarker,從上一次listObjects讀到的最後一個檔案的下一個檔案開始繼續獲取檔案清單。
  26. $nextMarker = $listObjectInfo->getNextMarker();
  27. $listObject = $listObjectInfo->getObjectList();
  28. $listPrefix = $listObjectInfo->getPrefixList();
  29. if (!empty($listObject)) {
  30. print("objectList:\n");
  31. foreach ($listObject as $objectInfo) {
  32. print($objectInfo->getKey() . "\n");
  33. }
  34. }
  35. if (!empty($listPrefix)) {
  36. print("prefixList: \n");
  37. foreach ($listPrefix as $prefixInfo) {
  38. print($prefixInfo->getPrefix() . "\n");
  39. }
  40. }
  41. if ($nextMarker === '') {
  42. break;
  43. }
  44. }

列舉指定條件的檔案

以下代碼用於列舉指定條件的檔案:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $bucket= "<yourBucketName>";
  16. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  17. $prefix = 'dir/';
  18. $delimiter = '/';
  19. $nextMarker = '';
  20. $maxkeys = 10;
  21. $options = array(
  22. 'delimiter' => $delimiter,
  23. 'prefix' => $prefix,
  24. 'max-keys' => $maxkeys,
  25. 'marker' => $nextMarker,
  26. );
  27. try {
  28. $listObjectInfo = $ossClient->listObjects($bucket, $options);
  29. } catch (OssException $e) {
  30. printf(__FUNCTION__ . ": FAILED\n");
  31. printf($e->getMessage() . "\n");
  32. return;
  33. }
  34. print(__FUNCTION__ . ": OK" . "\n");
  35. $objectList = $listObjectInfo->getObjectList(); // object list
  36. $prefixList = $listObjectInfo->getPrefixList(); // directory list
  37. if (!empty($objectList)) {
  38. print("objectList:\n");
  39. foreach ($objectList as $objectInfo) {
  40. print($objectInfo->getKey() . "\n");
  41. }
  42. }
  43. if (!empty($prefixList)) {
  44. print("prefixList: \n");
  45. foreach ($prefixList as $prefixInfo) {
  46. print($prefixInfo->getPrefix() . "\n");
  47. }
  48. }

上述例子中的$options包含的參數如下:

參數 說明 是否必需
delimiter 對檔案名稱進行分組的一個字元。CommonPrefixes是以delimiter結尾,並有共同首碼的檔案集合。
prefix 本次查詢結果的首碼。
max-keys 列舉檔案的最大個數。預設為100,最大值為1000。
marker 標明本次列舉檔案的起點。

刪除檔案

刪除單個檔案

以下代碼用於刪除單個檔案:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $bucket= "<yourBucketName>";
  16. $object = "<yourObjectName>";
  17. try{
  18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  19. $ossClient->deleteObject($bucket, $object);
  20. } catch(OssException $e) {
  21. printf(__FUNCTION__ . ": FAILED\n");
  22. printf($e->getMessage() . "\n");
  23. return;
  24. }
  25. print(__FUNCTION__ . ": OK" . "\n");

刪除多個檔案

以下代碼用於大量刪除檔案:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $bucket= "<yourBucketName>";
  16. $objects = array();
  17. $objects[] = "<yourObjectName1>";
  18. $objects[] = "<yourObjectName2>";
  19. try{
  20. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  21. $ossClient->deleteObjects($bucket, $objects);
  22. } catch(OssException $e) {
  23. printf(__FUNCTION__ . ": FAILED\n");
  24. printf($e->getMessage() . "\n");
  25. return;
  26. }
  27. print(__FUNCTION__ . ": OK" . "\n");

拷貝檔案

簡單拷貝

以下代碼用於拷貝小於1GB的檔案:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $from_bucket = "<yourFromBucketName>";
  16. $from_object = "<yourFromObjectName>";
  17. $to_bucket = $bucket;
  18. $to_object = $from_object . '.copy';
  19. try{
  20. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  21. $ossClient->copyObject($from_bucket, $from_object, $to_bucket, $to_object);
  22. } catch(OssException $e) {
  23. printf(__FUNCTION__ . ": FAILED\n");
  24. printf($e->getMessage() . "\n");
  25. return;
  26. }
  27. print(__FUNCTION__ . ": OK" . "\n");
  28. `

拷貝大檔案

對於大於1GB的檔案,需要使用分區拷貝。分區拷貝分為三步:

  1. 通過$ossClient->initiateMultipartUpload初始化分區拷貝任務。
  2. 通過$ossClient->uploadPartCopy進行分區拷貝。除最後一個分區外,其它分區都要大於100KB。
  3. 通過$ossClient->completeMultipartUpload提交分區拷貝任務。

以下代碼用於分區拷貝:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $src_bucket = "<yourSourceBucketName>";
  16. $src_object = "<yourSourceObjectName>";
  17. $dst_bucket = "<yourDestinationBucketName>";
  18. $dst_object = "<yourDestinationObjectName>";
  19. try{
  20. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  21. // 初始化分區。
  22. $upload_id = $ossClient->initiateMultipartUpload($dst_bucket, $dst_object);
  23. $copyId = 1;
  24. // 逐個分區拷貝。
  25. $eTag = $ossClient->uploadPartCopy( $src_bucket, $src_object, $dst_bucket, $dst_object,$copyId, $upload_id);
  26. $upload_parts[] = array(
  27. 'PartNumber' => $copyId,
  28. 'ETag' => $eTag,
  29. );
  30. // 完成分區拷貝。
  31. $result = $ossClient->completeMultipartUpload($dst_bucket, $dst_object, $upload_id, $upload_parts);
  32. } catch(OssException $e) {
  33. printf(__FUNCTION__ . ": FAILED\n");
  34. printf($e->getMessage() . "\n");
  35. return;
  36. }
  37. print(__FUNCTION__ . ": OK" . "\n");

解凍歸檔檔案

歸檔類型(Archive)的檔案需要解凍(Restore)之後才能讀取。非歸檔類型的檔案,不要調用restoreObject方法。

歸檔檔案的狀態變換過程如下:

  1. 歸檔類型的檔案初始時處於冷凍狀態。
  2. 提交解凍操作後,服務端執行解凍,檔案處於解凍中的狀態。
  3. 完成解凍後,可以讀取檔案。解凍狀態預設持續1天,最多延長7天,之後檔案又回到冷凍狀態。

以下代碼用於解凍歸檔檔案:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $bucket= "<yourBucketName>";
  16. $object = "<yourObjectName>";
  17. try {
  18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  19. $ossClient->restoreObject($bucket, $object);
  20. } catch (OssException $e) {
  21. printf(__FUNCTION__ . ": FAILED\n");
  22. printf($e->getMessage() . "\n");
  23. return;
  24. }
  25. print(__FUNCTION__ . ": OK" . "\n");

儲存類型詳情請參見儲存類型

符號連結

建立符號連結

符號連結是一種特殊的檔案,它指向某個具體的檔案,類似於Windows上使用的捷徑。符號連結支援自訂元資訊。

以下代碼用於建立符號連結:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $bucket= "<yourBucketName>";
  16. $object = "<yourObjectName>";
  17. $symlink = "<yourSymlink>";
  18. try {
  19. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  20. $ossClient->putSymlink($bucket, $symlink, $object);
  21. } catch (OssException $e) {
  22. printf(__FUNCTION__ . ": FAILED\n");
  23. printf($e->getMessage() . "\n");
  24. return;
  25. }
  26. print(__FUNCTION__ . ": OK" . "\n");

獲取符號連結指向的檔案內容

獲取符號連結要求您對該符號連結有讀許可權。以下代碼用於獲取符號連結指向的檔案內容:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $bucket= "<yourBucketName>";
  16. $symlink = "<yourSymlink>";
  17. try {
  18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  19. $Symlinks = $ossClient->getSymlink($bucket, $symlink);
  20. } catch (OssException $e) {
  21. printf(__FUNCTION__ . ": FAILED\n");
  22. printf($e->getMessage() . "\n");
  23. return;
  24. }
  25. print(__FUNCTION__ . ": OK" . "\n");
  26. var_dump($Symlinks);

開啟MD5校驗

MD5校驗用於確保資料轉送的完整性。使用MD5校驗時,效能會有所損失。上傳檔案時預設關閉MD5校驗。

以下代碼用於上傳檔案時開啟MD5校驗:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $bucket= "<yourBucketName>";
  16. $object = "<yourObjectName>";
  17. $options = array(OssClient::OSS_CHECK_MD5 => true);
  18. try{
  19. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  20. $ossClient->uploadFile($bucket, $object, __FILE__, $options);
  21. } catch(OssException $e) {
  22. printf(__FUNCTION__ . ": FAILED\n");
  23. printf($e->getMessage() . "\n");
  24. return;
  25. }
  26. print(__FUNCTION__ . ": OK" . "\n");

putObject、uploadFile、appendObject、appendFile、multiuploadFile方法支援開啟MD5校驗。