关于Object操作之如何实现DeleteMultipleObjects?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

关于Object操作之如何实现DeleteMultipleObjects?

青衫无名 2017-10-20 11:21:10 2202

Delete Multiple Objects


Delete Multiple Objects操作支持用户通过一个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
KeyOSS执行删除操作的Object名字。 类型:字符串 父节点:Deleted
EncodingType指明返回结果中编码使用的类型。如果请求的参数中指定了encoding-type,那返回的结果会对Key进行编码。类型:字符串父节点:容器


细节分析

  1. Delete Multiple Objects请求必须填Content-Length和Content-MD5字段。OSS会根据这些字段验证收到的消息体是正确的,之后才会执行删除操作。
  2. 生成Content-MD5字段内容方法:首先将Delete Multiple Object请求内容经过MD5加密后得到一个128位字节数组;再将该字节数组用base64算法编码;最后得到的字符串即是Content-MD5字段内容。
  3. Delete Multiple Objects请求默认是详细(verbose)模式。
  4. 在Delete Multiple Objects请求中删除一个不存在的Object,仍然认为是成功的。
  5. Delete Multiple Objects的消息体最大允许2MB的内容,超过2MB会返回MalformedXML错误码。
  6. Delete Multiple Objects请求最多允许一次删除1000个Object;超过1000个Object会返回MalformedXML错误码。
  7. 如果用户上传了Content-MD5请求头,OSS会计算body的Content-MD5并检查一致性,如果不一致,将返回InvalidDigest错误码。


示例


[backcolor=transparent]请求示例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 qn6qrrqxo2oawuk53otfj byc:+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>


[backcolor=transparent]返回示例: 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>


[backcolor=transparent]请求示例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 qn6qrrqxo2oawuk53otfj byc: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>


[backcolor=transparent]返回示例: 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

XML 算法 对象存储 数据安全/隐私保护 数据格式 容器
分享到
取消 提交回答
全部回答(0)
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章
相似问题