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提供以下兩種訊息返回模式:
有效值: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如下:
相關文檔
如果需要單個檔案,請參見DeleteObject。
如果需要自動刪除檔案,請參見生命週期概述。
錯誤碼
錯誤碼 | HTTP 狀態代碼 | 描述 |
InvalidDigest | 400 | 上傳了Content-MD5要求標頭後,OSS會計算訊息體的Content-MD5並檢查一致性,如果不一致會返回此錯誤碼。 |
MalformedXML | 400 |
|
FileImmutable | 409 | Bucket內的資料處於被保護狀態時,若您嘗試刪除或修改這些資料,將返回此錯誤碼。 |