自接口功能介绍
此接口用于以追加写的方式上传对象。区别于通过PutObject上传的normal object,通过AppendObject操作上传的对象类型为appendable object。
接口约束
当存储桶开启多版本的情况下不支持通过追加写上传对象。当对象处于合规保留政策保护期内时不支持追加写操作。
URI
PUT /{bucket}/{objectName}?append&position={position}
路径参数
参数 | 是否必填 | 参数类型 | 说明 | 示例 |
---|---|---|---|---|
bucket | 是 | String | 桶名称 | testBucket |
objectName | 是 | String | 对象名称 | test |
Query参数
参数 | 是否必填 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|---|
append | 是 | String | 固定参数 | append | |
position | 是 | Integer | 指定对象追加为位置, 每次追加写成功后,响应消息头会返回下一次追加的position,首次追加操作的position必须为0,后续追加操作的position是对象的当前大小 | 48 |
请求参数
请求头header参数
参数 | 是否必填 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|---|
x-amz-storage-class | 是 | StorageClass | 对象存储类别 | GLACIER(归档), STANDARD_IA(低频), STANDARD(标准,默认) | |
Authorization | 是 | String | 用于验证请求合法性的认证信息 |
请求体body参数
必传,对应为需要实际上传的数据部分。
响应参数
参数 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|
x-rgw-next-append-position | Integer | 下一次请求应当提供的position,即当前对象大小 | 48 | |
x-amz-next-append-position | Integer | 同x-rgw-next-append-position | 48 |
请求示例
PUT /testbucket/test?append&position=48 HTTP/1.1
请求头header
Authorization: authorization string
x-amz-storage-class: GLACIER
请求体body
实际文件数据。
响应示例
HTTP/1.1 200 OK
x-amz-request-id: 0A49CE4060975EAC
x-rgw-next-append-position: 100
x-amz-next-append-position: 100
x-amz-storage-class: GLACIER
Date: Wed, 12 Oct 2009 17:50:00 GMT
ETag: "1b2cf535f27731c974343645a3985328"
状态码
HTTP状态 | 描述 | |
---|---|---|
200 | 操作成功 | |
400 | EntityTooLarge | 上传的文件太大 |
400 | InvalidObjectName | 对象的名字不合法 |
403 | AccessDenied | 用户没有权限执行操作 |
404 | NoSuchBucket | 操作指定的桶不存在 |
409 | PositionNotEqualToLength | 请求参数中position的值与对象追加前的大小不一致 |
409 | InvalidBucketState | 对象类型不支持追加写操作 |
409 | FileImmutable | 桶版本控制设置为enabled或suspended |
错误码
请参考 请求错误码(原生接口)。