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 | 枚舉字元串 | 開啟“簡單”響應模式的開關。 有效值:true、false 預設值: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