DeleteMultipleObjects支援用戶通過一個HTTP請求刪除同一個Bucket中的多個Object。

Delete Multiple Objects操作支援一次請求內最多刪除1000個Object,並提供兩種返回模式:詳細(verbose)模式和簡單(quiet)模式。
  • 詳細模式:OSS返回的消息體中會包含每一個刪除Object的結果。
  • 簡單模式:OSS返回的消息體中只包含刪除過程中出錯的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>

請求參數(Request Parameters)

Delete Multiple Objects時,可以通過encoding-type對返回結果中的Key進行編碼。

名稱 描述
encoding-type 指定對返回的Key進行編碼,目前支援url編碼。Key使用UTF-8字元,但xml 1.0標準不支援解析一些控制字元,比如ascii值從0到10的字元。對於Key中包含xml 1.0標準不支援的控制字元,可以通過指定encoding-type對返回的Key進行編碼。

資料類型:字元串

預設值:無

可選值:url

請求元素(Request Elements)

名稱 類型 描述
Delete 容器 保存Delete Multiple Object請求的容器。

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

父節點: None

Key 字元串 被刪除Object的名字。

父節點:Object

Object 容器 保存一個Object資訊的容器。

子節點:key

父節點:Delete

Quiet 枚舉字元串 開啟“簡單”響應模式的開關。

有效值:truefalse

預設值:false

父節點:Delete

響應元素(Response Elements)

名稱 類型 描述
Deleted 容器 保存被成功刪除的Object的容器。

子節點:Key

父節點:DeleteResult

DeleteResult 容器 保存Delete Multiple Object請求結果的容器。

子節點:Deleted

父節點:None

Key 字元串 OSS執行刪除操作的Object名字。

父節點:Deleted

EncodingType 字元串 指明返回結果中編碼使用的類型。如果請求的參數中指定了encoding-type,那返回的結果會對Key進行編碼。

父節點:容器

細節分析

  • Delete Multiple Objects請求必須填Content-Length和Content-MD5欄位。OSS會根據這些欄位驗證收到的消息體是正確的,之後才會執行刪除操作。
  • 生成Content-MD5欄位內容方法:首先將Delete Multiple Object請求內容經過MD5加密後得到一個128位位元組數組;再將該位元組數組用base64演算法編碼;最後得到的字元串即是Content-MD5欄位內容。
  • Delete Multiple Objects請求預設是詳細(verbose)模式。
  • 在Delete Multiple Objects請求中刪除一個不存在的Object,仍然認為是成功的。
  • Delete Multiple Objects的消息體最大允許2MB的內容,超過2MB會返回MalformedXML錯誤碼。
  • Delete Multiple Objects請求最多允許一次刪除1000個Object;超過1000個Object會返回MalformedXML錯誤碼。
  • 如果用戶上傳了Content-MD5要求標頭,OSS會計算body的Content-MD5並檢查一致性,如果不一致,將返回InvalidDigest錯誤碼。

樣本

請求樣本I:

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 qn6qrrqxo2oawuk53otfjbyc:+z3gBfnFAxBcBDgx27Y/jEfbfu8=
<?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>

請求樣本II:

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 qn6qrrqxo2oawuk53otfjbyc:WuV0Jks8RyGSNQrBca64kEExJDs=
<?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