使用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採用伺服器端加密編碼進行儲存。

合法值:AES256KMS

注意:用戶需要在控制台開通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>