使用Multipart Upload模式傳輸數據前,必須先調用該介面來通知OSS初始化一個Multipart Upload事件。
該介面會返回一個OSS伺服器建立的全域唯一的Upload ID,用於標識本次Multipart Upload事件。用戶可以根據這個ID來發起相關的操作,如中止Multipart Upload、查詢Multipart Upload等。
請求文法
POST /ObjectName?uploads HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT date
Authorization: SignatureValue
請求參數(Request Parameters)
Initiate Multipart Upload時,可以通過encoding-type對返回結果中的Key進行編碼。
名稱 | 類型 | 描述 |
---|---|---|
encoding-type | 字元串 | 指定對返回的Key進行編碼,目前支援url編碼。Key使用UTF-8字元,但xml 1.0標準不支援解析一些控制字元,比如ascii值從0到10的字元。對於Key中包含xml 1.0標準不支援的控制字元,可以通過指定encoding-type對返回的Key進行編碼。 預設值:無 可選值:url |
請求Header
名稱 | 類型 | 描述 |
---|---|---|
Cache-Control | 字元串 | 指定該Object被下載時的網頁的緩存行為;更詳細描述請參照RFC2616。 預設值:無 |
Content-Disposition | 字元串 | 指定該Object被下載時的名稱;更詳細描述請參照RFC2616。 預設值:無 |
Content-Encoding | 字元串 | 指定該Object被下載時的內容編碼格式;更詳細描述請參照RFC2616。 預設值:無 |
Expires | 整數 | 過期時間(milliseconds);更詳細描述請參照RFC2616。 預設值:無 |
x-oss-server-side-encryption | 字元串 | 指定上傳該Object每個part時使用的伺服器端加密編碼演算法,OSS會對上傳的每個part採用伺服器端加密編碼進行儲存。 合法值:AES256 或 KMS 注意:用戶需要在控制台開通KMS(金鑰管理服務),才可使用KMS密碼編譯演算法,否則會報KmsServiceNotEnabled錯誤碼。 |
響應元素(Response Elements)
名稱 | 類型 | 描述 |
---|---|---|
Bucket | 字元串 | 初始化一個Multipart Upload事件的Bucket名稱。 父節點:InitiateMultipartUploadResult |
InitiateMultipartUploadResult | 容器 | 保存Initiate Multipart Upload請求結果的容器。 子節點:Bucket, Key, UploadId 父節點:None |
Key | 字元串 | 初始化一個Multipart Upload事件的Object名稱。 父節點:InitiateMultipartUploadResult |
UploadId | 字元串 | 唯一標示此次Multipart Upload事件的ID。 父節點:InitiateMultipartUploadResult |
EncodingType | 字元串 | 指明返回結果中編碼使用的類型。如果請求的參數中指定了encoding-type,那返回的結果會對Key進行編碼。 父節點:容器 |
細節分析
- 該操作計算認證簽名的時候,需要加“?uploads”到CanonicalizedResource中。
- 初始化Multipart Upload請求,支援如下標準的HTTP要求標頭:Cache-Control,Content- Disposition,Content-Encoding,Content-Type,Expires,以及以“x-oss-meta-”開頭的用戶自訂Headers。具體含義請參見PUT Object介面。
- 初始化Multipart Upload請求,並不會影響已經存在的同名object。
- 伺服器收到初始化Multipart Upload請求後,會返回一個XML格式的請求體。該請求體內有三個元素:Bucket,Key和UploadID。請記錄下其中的UploadID,以用於後續的Multipart相關操作。
- 初始化Multipart Upload請求時,若設定了x-oss-server-side-encryption Header,則在回應標頭中會返回該Header,並且在上傳的每個part時,服務端會自動對每個part進行熵編碼加密儲存,目前OSS伺服器端只支援AES256和KMS加密,指定其他值會返回400和相應的錯誤提示:InvalidEncryptionAlgorithmError;在上傳每個part時不必再添加x-oss-server-side-encryption 要求標頭,若指定該要求標頭則OSS會返回400和相應的錯誤提示:InvalidArgument。
樣本
請求樣本:
POST /multipart.data?uploads HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Wed, 22 Feb 2012 08:32:21 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:/cluRFtRwMTZpC2hTj4F67AGdM4=
返回樣本:
HTTP/1.1 200 OK
Content-Length: 230
Server: AliyunOSS
Connection: keep-alive
x-oss-request-id: 42c25703-7503-fbd8-670a-bda01eaec618
Date: Wed, 22 Feb 2012 08:32:21 GMT
Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?>
<InitiateMultipartUploadResult xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”>
<Bucket> multipart_upload</Bucket>
<Key>multipart.data</Key>
<UploadId>0004B9894A22E5B1888A1E29F8236E2D</UploadId>
</InitiateMultipartUploadResult>