日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

PHP刪除文件

重要

本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。

您可以根據需要刪除單個文件(Object)、刪除指定的多個文件、刪除指定前綴的文件或者刪除指定目錄及目錄下的所有文件。

警告

請您謹慎使用刪除操作,文件刪除后將無法恢復。

注意事項

  • 本文以華東1(杭州)外網Endpoint為例。如果您希望通過與OSS同地域的其他阿里云產品訪問OSS,請使用內網Endpoint。關于OSS支持的RegionEndpoint的對應關系,請參見OSS訪問域名、數據中心、開放端口

  • 本文以OSS域名新建OSSClient為例。如果您希望通過自定義域名、STS等方式新建OSSClient,請參見新建OssClient

  • 要刪除文件,您必須具有oss:DeleteObject權限。具體操作,請參見RAM用戶授權自定義的權限策略

刪除單個文件

以下代碼用于刪除examplebucket中的exampleobject.txt文件。

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;

// 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
$provider = new EnvironmentVariableCredentialsProvider();
// yourEndpoint填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
$endpoint = "yourEndpoint";
// 填寫Bucket名稱,例如examplebucket。
$bucket = "examplebucket";
// 填寫文件完整路徑,例如exampledir/exampleobject.txt。文檔完整路徑中不能包含Bucket名稱。
$object = "exampledir/exampleobject.txt";

try{
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

    $ossClient->deleteObject($bucket, $object);
} catch(OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . "OK" . "\n");          

批量刪除文件

手動刪除文件時,每次最多刪除1000個文件。您可以刪除指定的多個文件、刪除指定前綴的文件或者刪除指定目錄及目錄下的所有文件。

OSS還支持通過設置生命周期規則來自動刪除文件。更多信息,請參見基于最后一次修改時間的生命周期規則

刪除指定名稱的多個文件

以下代碼用于刪除指定名稱的多個文件。

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\OssClient;
use OSS\Core\OssException;

// 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
$accessKeyId = getenv("OSS_ACCESS_KEY_ID");
$accessKeySecret = getenv("OSS_ACCESS_KEY_SECRET");
// yourEndpoint填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
$endpoint = "yourEndpoint";
// 填寫Bucket名稱,例如examplebucket。
$bucket = "examplebucket";

try {
   $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
   // 填寫需要刪除的多個文件完整路徑。文件完整路徑中不能包含Bucket名稱。
   $objects = array();
   $objects[] = "exampleobjecta.txt";
   $objects[] = "exampledir/sampleobject.txt";
   $result = $ossClient->deleteObjects($bucket, $objects);

   foreach ($result as $info){
      $obj = strval($info);
      printf("Delete ".$obj." : Success" . "\n");
   }
   printf("Delete Objects : OK" . "\n");
} catch (OssException $e) {
   printf("Delete Objects : Failed" . "\n");
   printf($e->getMessage() . "\n");
   return;
}            

刪除指定前綴或目錄下的多個文件

以下代碼用于刪除指定前綴的多個文件或者指定目錄(文件夾)及目錄下的所有文件。

警告

如果以下示例代碼中前綴OSS_PREFIX的值為空字符串或者NULL,將會刪除整個Bucket內的所有文件,請謹慎使用。

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
   require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
   require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\OssClient;
use OSS\Core\OssException;

// 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
$accessKeyId = getenv("OSS_ACCESS_KEY_ID");
$accessKeySecret = getenv("OSS_ACCESS_KEY_SECRET");
// yourEndpoint填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
$endpoint = "yourEndpoint";
// 填寫Bucket名稱,例如examplebucket。
$bucket = "examplebucket";

try {
   $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
   $option = array(
      OssClient::OSS_MARKER => null,
      // 如果您需要刪除所有前綴為src的文件,則prefix設置為src。設置為src后,所有前綴為src的非目錄文件、src目錄以及目錄下的所有文件均會被刪除。
      OssClient::OSS_PREFIX => "src",
      // 如果您僅需要刪除src目錄及目錄下的所有文件,則prefix設置為src/。
      // OssClient::OSS_PREFIX => "src/",
   );
   $bool = true;
   while ($bool){
      // 列舉并刪除多個文件。
      $result = $ossClient->listObjects($bucket,$option);
      $objects = array();
      if(count($result->getObjectList()) > 0){
         foreach ($result->getObjectList() as $key => $info){
            printf("key name:".$info->getKey().PHP_EOL);
            $objects[] = $info->getKey();
         }
         $delObjects = $ossClient->deleteObjects($bucket, $objects);
         foreach ($delObjects as $info){
            $obj = strval($info);
            printf("Delete ".$obj." : Success" . PHP_EOL);
         }
      }

      if($result->getIsTruncated() === 'true'){
         $option[OssClient::OSS_MARKER] = $result->getNextMarker();
      }else{
         $bool = false;
      }
   }
   printf("Delete Objects : OK" . PHP_EOL);
} catch (OssException $e) {
   printf("Delete Objects : Failed" . PHP_EOL);
   printf($e->getMessage() . PHP_EOL);
   return;
}
說明

如果使用try{}catch{}獲取錯誤時拋出Exception,則表示沒有成功刪除單個或多個文件。此時您還可以根據$e->getMessage來分析錯誤原因。

相關文檔

  • 關于刪除單個或多個文件的完整示例代碼,請參見GitHub示例

  • 關于刪除單個文件的API接口說明,請參見DeleteObject

  • 關于刪除多個文件的API接口說明,請參見DeleteMultipleObjects