文档中心 > AppendObject
AppendObject

最近更新时间:2022-11-08

使用AppendObject接口用于以追加写的方式上传Object。

Apennd上传对象若为归档对象,再继续上传之前,需要先进行解冻操作。


和其它操作的关系

其它操作

关系描述

PutObject

如果对一个已经存在的AppendableObject进行PutObject操作,该AppendableObject会被新的Object覆盖,类型变为Normal   Object。

HeadObject

对AppendableObject执行HeadObject操作会返回x-amz-next-append-position以及x-amz-object-type。AppendableObject的x-amz-object-type为Appendable。

GetBucket

GetBucket请求的响应中,会把AppendableObject的Type设为Appendable。


请求

请求语法

POST /ObjectName?append&position={Position} HTTP/1.1

Content-Length:{ContentLength}

Content-Type: {ContentType}

Host: examplebucket.region.unicloudsrv.com

Date: GMT Date

Authorization: SignatureValue

请求参数

AppendObject的请求消息参数必须包含append和position。append和position均为规范化资源,需要包含在签名中。

append:用于指定这是一个AppendObject操作。

position:用于指定从何处进行追加。首次追加操作的position必须为0,后续追加操作的position是Object的当前长度。例如,第一次AppendObject请求指定position值为0,content-length是65536,则第二次AppendObject需要指定position为65536。

每次操作成功后,响应消息头x-amz-next-append-position也会标明下一次追加的position。


注意:

  • 当position值为0时,目标Bucket下如果没有同名Appendable Object,或者同名Appendable Object长度为0,该请求成功;其他情况均视为position和Object长度不匹配的情形,返回PositionNotEqualToLength错误码。

  • Append Object产生的Object长度限制和PutObject一样。每次AppendObject都会更新该Object的最后修改时间。

  • 在position值正确的情况下,对已存在的Appendable Object追加一个长度为0的内容,该操作不会改变Object的状态。



请求消息头

消息头名称

类型

描述

Cache-Control

字符串

指定该Object的网页缓存行为。详情参考RFC2616。
默认值:无

Content-Disposition

字符串

指定该Object被下载时的名称。详情参考RFC2616。
默认值:无

Content-Encoding

字符串

指定该Object的内容编码格式。详情参考RFC2616。
默认值:无

Content-MD5

字符串

Content-MD5是一串由MD5算法生成的值,该请求头用于检查消息内容是否与发送时一致。
获取Content-MD5值:对消息内容(不包括头部)执行MD5算法获得128比特位数字,然后对该数字进行base64编码。
默认值:无

Expires

整数

过期时间。详情参考RFC2616。
默认值:无

x-amz-object-acl

字符串

指定Object的访问权限。
合法值:public-read、private

x-amz-storage-class

字符串

指定Object的类型,合法值:STANDARD、STANDARD_IA


响应

响应消息头

消息头名称

类型

描述

x-amz-next-append-position

64位整型

下一次请求应当提供的position,即当前Object长度。
  当AppendObject执行成功,或是因position和Object长度不匹配而引起的409错误时,会返回此消息头。

特殊错误

错误代码

HTTP 状态码

说明

ObjectNotAppendable

409

不能对一个非Appendable   Object进行AppendObject操作。

PositionNotEqualToLength

409

position的值和当前Object的长度不一致。您可以通过响应头x-amz-next-append-position得到下一次position,并再次进行请求。


示例

请求示例

POST /dxcc.txt?append&position=0 HTTP/1.1

Host: test.oss-cn-north-1.unicloudsrv.com

Cache-control: no-cache

Expires: Mon, 08 Dec 2018 18:00:00 GMT

Content-Encoding: utf-8

Content-Disposition: attachment;filename=dxcc.txt

Date: Mon, 08 Dec 2018 12:00:00 GMT 

Content-Type: text/plain

Content-Length: 123

Authorization: AWS w4yfaJhgdosBantOdfzsbnbmqD+pnnsbqPbawgRlnwi= 

[123 bytes of object data]

返回示例

HTTP/1.1 200 OK

Date: Mon, 08 Dec 2018 12:00:01 GMT

ETag: dc68aa62edee9c510eea58429de15f71

Connection: keep-alive

Content-Length: 0 

X-Amz-Next-Append-Position: 123