追加寫上傳
更新時間 2024-08-20 11:16:33
最近更新時間: 2024-08-20 11:16:33
分享文章
此接口用于以追加寫的方式上傳對象。
自接口功能介紹
此接口用于以追加寫的方式上傳對象。區別于通過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 |
錯誤碼
請參考 請求錯誤碼(原生接口)。