DeleteMultipleObjects
DeleteMultipleObjects接口用于刪除同一個存儲空間(Bucket)中的多個文件(Object)。
單次調(diào)用DeleteMultipleObjects接口最多允許刪除1000個文件。
文件刪除后無法恢復(fù),請謹慎操作。關(guān)于刪除文件的更多信息,請參見刪除文件。
版本控制
在開啟版本控制的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 ON云盒中調(diào)用該接口時,您需要將Host替換為云盒Endpoint。更多信息,請參見云盒Endpoint。
請求頭
OSS會根據(jù)以下請求頭驗證收到的消息體,消息體正確才會執(zhí)行刪除操作。
名稱 | 類型 | 是否必選 | 示例值 | 描述 |
Encoding-type | 字符串 | 否 | url | Key使用UTF-8字符。如果Key中包含XML 1.0標準不支持的控制字符,您可以通過指定Encoding-type對返回結(jié)果中的Key進行編碼。 默認值:無 可選值:url |
Content-Length | 字符串 | 是 | 151 | 用于描述HTTP消息體的傳輸長度。 OSS會根據(jù)此請求頭驗證收到的消息體,消息體正確才會執(zhí)行刪除操作。 |
Content-MD5 | 字符串 | 是 | ohhnqLBJFiKkPSBO1eNaUA== | Content-MD5是一串由MD5算法生成的值,該請求頭用于檢查消息內(nèi)容是否與發(fā)送時一致。上傳了Content-MD5請求頭后,OSS會計算消息體的Content-MD5并檢查一致性。 說明 將DeleteMultipleObjects的請求消息體經(jīng)過MD5加密后得到一個128位字節(jié)數(shù)組。然后將該字節(jié)數(shù)組用base64算法編碼,編碼后得到的字符串即Content-MD5字段內(nèi)容。 |
請求元素
名稱 | 類型 | 是否必選 | 示例值 | 描述 |
Delete | 容器 | 是 | 不涉及 | 保存DeleteMultipleObjects請求的容器。 子節(jié)點:一個或多個Object元素,Quiet元素 父節(jié)點: None |
Object | 容器 | 是 | 不涉及 | 保存一個Object信息的容器。 子節(jié)點:Key 父節(jié)點:Delete |
Key | 字符串 | 是 | test.jpg | 被刪除Object的名字。 父節(jié)點:Object |
Quiet | 枚舉字符串 | 是 | false | 打開簡單響應(yīng)模式的開關(guān)。 DeleteMultipleObjects提供以下兩種消息返回模式:
有效值:true(開啟簡單模式)、false(開啟詳細模式) 默認值:false 父節(jié)點:Delete |
VersionId | 字符串 | 否 | CAEQNRiBgIDyz.6C0BYiIGQ2NWEwNmVhNTA3ZTQ3MzM5ODliYjM1ZTdjYjA4**** | 被刪除Object的版本號。 父節(jié)點:Object |
響應(yīng)元素
名稱 | 類型 | 示例值 | 描述 |
Deleted | 容器 | 不涉及 | 保存成功刪除的Object的容器。 重要 返回的響應(yīng)元素Deleted僅保存成功刪除的Object,不保存刪除失敗的Object。您可以通過對比發(fā)起批量刪除請求前與刪除后返回的Deleted元素中保存的Object列表之間的差異,獲取刪除失敗的Object名稱。 子節(jié)點:Key 父節(jié)點:DeleteResult |
DeleteResult | 容器 | 不涉及 | 保存DeleteMultipleObjects請求結(jié)果的容器。 子節(jié)點:Deleted 父節(jié)點:None |
Key | 字符串 | demo.jpg | 被刪除Object的名字。 父節(jié)點:Deleted |
EncodingType | 字符串 | url | 返回結(jié)果中編碼使用的類型。如果請求的參數(shù)中指定了Encoding-type,則返回的結(jié)果會對Key進行編碼。 父節(jié)點:容器 |
DeleteMarker | 布爾 | true | 表示該版本是否為DeleteMarker。true為是,false為否。 說明 只有當創(chuàng)建刪除標記和永久刪除DeleteMarker時,才會返回該元素,且值為true。 |
DeleteMarkerVersionId | 字符串 | THUQNRiBgICEoPiC0BYiIGMxZWJmYmMzYjE0OTQ0ZmZhYjgzNzkzYjc2NjZk**** | 表示刪除標記對應(yīng)的版本ID。 父節(jié)點:Deleted |
示例
關(guān)閉簡單響應(yīng)模式的請求示例
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>
打開簡單響應(yīng)模式的請求示例
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執(zhí)行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和相應(yīng)的版本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及其對應(yīng)的版本ID。
DeleteMarker和DeleteMarkerVersionId分別代表被刪除的是刪除標記及其對應(yīng)的版本ID,此時的VersionId和DeleteMarkerVersionId相同,且DeleteMarker和DeleteMarkerVersionId同時出現(xiàn)。
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接口對應(yīng)的各語言SDK如下:
相關(guān)文檔
如果需要單個文件,請參見DeleteObject。
如果需要自動刪除文件,請參見生命周期概述。
錯誤碼
錯誤碼 | HTTP 狀態(tài)碼 | 描述 |
InvalidDigest | 400 | 上傳了Content-MD5請求頭后,OSS會計算消息體的Content-MD5并檢查一致性,如果不一致會返回此錯誤碼。 |
MalformedXML | 400 |
|
FileImmutable | 409 | Bucket內(nèi)的數(shù)據(jù)處于被保護狀態(tài)時,若您嘗試刪除或修改這些數(shù)據(jù),將返回此錯誤碼。 |