全部產品
Search
文件中心

Object Storage Service:DeleteMultipleObjects

更新時間:Jun 19, 2024

DeleteMultipleObjects介面用於刪除同一個儲存空間(Bucket)中的多個檔案(Object)。

說明
  • 單次調用DeleteMultipleObjects介面最多允許刪除1000個檔案。

  • 檔案刪除後無法恢複,請謹慎操作。關於刪除檔案的更多資訊,請參見刪除檔案

版本控制

在開啟版本控制的Bucket中,同樣可以使用DeleteMultipleObjects介面來大量刪除Object。在Delete請求中如果沒有指定versionId,將插入刪除標記。如果指定了versionId,將永久刪除該Object的指定版本。

請求文法

POST /?delete HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Content-Length: ContentLength
Content-MD5: MD5Value
Authorization: SignatureValue
<?xml version="1.0" encoding="UTF-8"?>
<Delete>
  <Quiet>true</Quiet>
  <Object>
    <Key>key</Key>
  </Object>
…
</Delete>

要求標頭

OSS會根據以下要求標頭驗證收到的訊息體,訊息體正確才會執行刪除操作。

名稱

類型

是否必選

樣本值

描述

Encoding-type

字串

url

Key使用UTF-8字元。如果Key中包含XML 1.0標準不支援的控制字元,您可以通過指定Encoding-type對返回結果中的Key進行編碼。

預設值:無

可選值:url

Content-Length

字串

151

用於描述HTTP訊息體的傳輸長度。

OSS會根據此要求標頭驗證收到的訊息體,訊息體正確才會執行刪除操作。

Content-MD5

字串

ohhnqLBJFiKkPSBO1eNaUA==

Content-MD5是一串由MD5演算法產生的值,該要求標頭用於檢查訊息內容是否與發送時一致。上傳了Content-MD5要求標頭後,OSS會計算訊息體的Content-MD5並檢查一致性。

說明

將DeleteMultipleObjects的請求訊息體經過MD5加密後得到一個128位位元組數組。然後將該位元組數組用base64演算法編碼,編碼後得到的字串即Content-MD5欄位內容。

請求元素

名稱

類型

是否必選

樣本值

描述

Delete

容器

不涉及

儲存DeleteMultipleObjects請求的容器。

子節點:一個或多個Object元素,Quiet元素

父節點: None

Object

容器

不涉及

儲存一個Object資訊的容器。

子節點:Key

父節點:Delete

Key

字串

test.jpg

被刪除Object的名字。

父節點:Object

Quiet

枚舉字串

false

開啟簡單響應模式的開關。

DeleteMultipleObjects提供以下兩種訊息返回模式:

  • 簡單模式(quiet):OSS不返回訊息體。

  • 詳細模式(verbose):OSS返回的訊息體中會包含所有刪除Object的結果。預設採用詳細模式。

有效值:true(開啟簡單模式)、false(開啟詳細模式)

預設值:false

父節點:Delete

VersionId

字串

CAEQNRiBgIDyz.6C0BYiIGQ2NWEwNmVhNTA3ZTQ3MzM5ODliYjM1ZTdjYjA4****

被刪除Object的版本號碼。

父節點:Object

響應元素

名稱

類型

樣本值

描述

Deleted

容器

不涉及

儲存成功刪除的Object的容器。

重要

返回的響應元素Deleted僅儲存成功刪除的Object,不儲存刪除失敗的Object。您可以通過對比發起大量刪除請求前與刪除後返回的Deleted元素中儲存的Object列表之間的差異,擷取刪除失敗的Object名稱。

子節點:Key

父節點:DeleteResult

DeleteResult

容器

不涉及

儲存DeleteMultipleObjects請求結果的容器。

子節點:Deleted

父節點:None

Key

字串

demo.jpg

被刪除Object的名字。

父節點:Deleted

EncodingType

字串

url

返回結果中編碼使用的類型。如果請求的參數中指定了Encoding-type,則返回的結果會對Key進行編碼。

父節點:容器

DeleteMarker

布爾

true

表示該版本是否為DeleteMarker。true為是,false為否。

說明

只有當建立刪除標記和永久刪除DeleteMarker時,才會返回該元素,且值為true。

DeleteMarkerVersionId

字串

THUQNRiBgICEoPiC0BYiIGMxZWJmYmMzYjE0OTQ0ZmZhYjgzNzkzYjc2NjZk****

表示刪除標記對應的版本ID。

父節點:Deleted

樣本

  • 關閉簡單響應模式的請求樣本

    POST /?delete HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Date: Wed, 29 Feb 2012 12:26:16 GMT
    Content-Length:151
    Content-MD5: ohhnqLBJFiKkPSBO1eNaUA==
    Authorization: OSS qn6q**************:77Dv****************
    
    <?xml version="1.0" encoding="UTF-8"?>
    <Delete> 
      <Quiet>false</Quiet>  
      <Object> 
        <Key>multipart.data</Key> 
      </Object>  
      <Object> 
        <Key>test.jpg</Key> 
      </Object>  
      <Object> 
        <Key>demo.jpg</Key> 
      </Object> 
    </Delete>

    返回樣本

    HTTP/1.1 200 OK
    x-oss-request-id: 78320852-7eee-b697-75e1-b6db0f4849e7
    Date: Wed, 29 Feb 2012 12:26:16 GMT
    Content-Length: 244
    Content-Type: application/xml
    Connection: keep-alive
    Server: AliyunOSS
    
    <?xml version="1.0" encoding="UTF-8"?>
    <DeleteResult xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”>
        <Deleted>
           <Key>multipart.data</Key>
        </Deleted>
        <Deleted>
           <Key>test.jpg</Key>
        </Deleted>
        <Deleted>
           <Key>demo.jpg</Key>
        </Deleted>
    </DeleteResult>
  • 開啟簡單響應模式的請求樣本

    POST /?delete HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Date: Wed, 29 Feb 2012 12:33:45 GMT
    Content-Length:151
    Content-MD5: ohhnqLBJFiKkPSBO1eNaUA==
    Authorization: OSS qn6q**************:77Dv****************
    
    <?xml version="1.0" encoding="UTF-8"?>
    <Delete> 
      <Quiet>true</Quiet>  
      <Object> 
        <Key>multipart.data</Key> 
      </Object>  
      <Object> 
        <Key>test.jpg</Key> 
      </Object>  
      <Object> 
        <Key>demo.jpg</Key> 
      </Object> 
    </Delete>

    返回樣本

    HTTP/1.1 200 OK
    x-oss-request-id: 559CC9BDC755F95A64485981
    Date: Wed, 29 Feb 2012 12:33:45 GMT
    Content-Length: 0
    Connection: keep-alive
    Server: AliyunOSS
  • 未指定versionID執行DeleteMultipleObjects操作的請求樣本

    POST /?delete HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Date: Tue, 09 Apr 2019 04:20:03 GMT
    Content-MD5: xSLOYWaPC86RPwWXNiFeXg==
    Authorization: OSS qn6q**************:77Dv****************
    
    <?xml version="1.0" encoding="UTF-8"?>
    <Delete> 
      <Quiet>false</Quiet>  
      <Object> 
        <Key>multipart.data</Key>
      </Object>  
      <Object> 
        <Key>test.jpg</Key> 
      </Object>
    </Delete>

    返回樣本

    以下樣本中由於要刪除的兩個Object(multipart.dat和test.jpg)都未指定versionId,因此OSS為其插入了刪除標記,並返回<DeleteMarker>true</DeleteMarker>和<DeleteMarkerVersionId>XXXXXX</DeleteMarkerVersionId>。

    HTTP/1.1 200 OK
    x-oss-request-id: 5CAC1D73B7AEADE01700****
    Date: Tue, 09 Apr 2019 04:20:03 GMT
    Content-Type: application/xml
    Connection: keep-alive
    Server: AliyunOSS
    
    <?xml version="1.0" encoding="UTF-8"?>
    <DeleteResult>
        <Deleted>
           <Key>multipart.data</Key>
           <DeleteMarker>true</DeleteMarker>
           <DeleteMarkerVersionId>CAEQMhiBgIDXiaaB0BYiIGQzYmRkZGUxMTM1ZDRjOTZhNjk4YjRjMTAyZjhl****</DeleteMarkerVersionId>
        </Deleted>
        <Deleted>
           <Key>test.jpg</Key>
           <DeleteMarker>true</DeleteMarker>
           <DeleteMarkerVersionId>CAEQMhiBgIDB3aWB0BYiIGUzYTA3YzliMzVmNzRkZGM5NjllYTVlMjYyYWEy****</DeleteMarkerVersionId>
        </Deleted>
    </DeleteResult>
  • 指定versionId來刪除指定版本Object的請求樣本

    說明

    指定versionId的同時必須指定Key。

    POST /?delete HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Date: Tue, 09 Apr 2019 06:09:34 GMT
    Content-Length:151
    Content-MD5: 2Tpk+dL/tGyuSA+YCEuSVg==
    Authorization: OSS qn6q**************:77Dv****************
    
    <?xml version="1.0" encoding="UTF-8"?>
    <Delete> 
      <Quiet>false</Quiet>  
      <Object> 
        <Key>multipart.data</Key>
        <VersionId>CAEQNRiBgIDyz.6C0BYiIGQ2NWEwNmVhNTA3ZTQ3MzM5ODliYjM1ZTdjYjA4****</VersionId>
      </Object>
    </Delete>

    返回樣本

    樣本中返回了被刪除的對象Key和相應的版本ID。

    HTTP/1.1 200 OK
    x-oss-request-id: 5CAC371EB7AEADE01700****
    Date: Tue, 09 Apr 2019 06:09:34 GMT
    Content-Length: 244
    Content-Type: application/xml
    Connection: keep-alive
    Server: AliyunOSS
    
    <?xml version="1.0" encoding="UTF-8"?>
    <DeleteResult xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”>
        <Deleted>
           <Key>multipart.data</Key>
           <VersionId>CAEQNRiBgIDyz.6C0BYiIGQ2NWEwNmVhNTA3ZTQ3MzM5ODliYjM1ZTdjYjA4****</VersionId>
        </Deleted>
    </DeleteResult>
  • 指定versionId來刪除DeleteMarker的請求樣本

    POST /?delete HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Date: Tue, 09 Apr 2019 06:14:50 GMT
    Content-Length: 178
    Content-MD5: dX9IFePFgYhmINvAhG30Bg==
    Authorization: OSS qn6q**************:77Dv****************
    
    <?xml version="1.0" encoding="UTF-8"?>
    <Delete> 
      <Quiet>false</Quiet>  
      <Object> 
        <Key>multipart.data</Key>
        <VersionId>CAEQNRiBgICEoPiC0BYiIGMxZWJmYmMzYjE0OTQ0ZmZhYjgzNzkzYjc2NjZk****</VersionId>
      </Object>
    </Delete>

    返回樣本

    • 樣本中返回的Key和VersionId分別代表被刪除的對象Key及其對應的版本ID。

    • DeleteMarker和DeleteMarkerVersionId分別代表被刪除的是刪除標記及其對應的版本ID,此時的VersionId和DeleteMarkerVersionId相同,且DeleteMarker和DeleteMarkerVersionId同時出現。

    HTTP/1.1 200 OK
    x-oss-request-id: 5CAC385AB7AEADE01700****
    Date: Tue, 09 Apr 2019 06:14:50 GMT
    Content-Length: 364
    Content-Type: application/xml
    Connection: keep-alive
    Server: AliyunOSS
    
    <?xml version="1.0" encoding="UTF-8"?>
    <DeleteResult xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”>
        <Deleted>
           <Key>demo.jpg</Key>
           <VersionId>CAEQNRiBgICEoPiC0BYiIGMxZWJmYmMzYjE0OTQ0ZmZhYjgzNzkzYjc2NjZk****</VersionId>
           <DeleteMarker>true</DeleteMarker>
           <DeleteMarkerVersionId>THUQNRiBgICEoPiC0BYiIGMxZWJmYmMzYjE0OTQ0ZmZhYjgzNzkzYjc2NjZk****</DeleteMarkerVersionId>
        </Deleted>
    </DeleteResult>

SDK

DeleteMultipleObjects介面對應的各語言SDK如下:

相關文檔

錯誤碼

錯誤碼

HTTP 狀態代碼

描述

InvalidDigest

400

上傳了Content-MD5要求標頭後,OSS會計算訊息體的Content-MD5並檢查一致性,如果不一致會返回此錯誤碼。

MalformedXML

400

  • 訊息體最大允許2 MB的內容,超過2 MB則返回此錯誤碼。

  • 單次調用DeleteMultipleObjects介面最多支援刪除1000個Object。單次請求超過1000個Object返回此錯誤碼。

FileImmutable

409

Bucket內的資料處於被保護狀態時,若您嘗試刪除或修改這些資料,將返回此錯誤碼。