使用Multipart Upload模式傳輸資料前,您必須先調用InitiateMultipartUpload介面來通知OSS初始化一個Multipart Upload事件。
注意事項
調用介面會返回一個OSS伺服器建立的全域唯一的Upload ID,用於標識本次Multipart Upload事件。您可以根據這個ID來發起相關的操作,例如中止Multipart Upload、查詢Multipart Upload等。
初始化Multipart Upload請求不影響已存在的同名Object。
InitiateMultipartUpload操作計算認證簽名時,需要添加
?uploads
到CanonicalizedResource
中。要通知OSS初始化一個Multipart Upload事件,您必須有
oss:PutObject
許可權。具體操作,請參見為RAM使用者授權自訂的權限原則。
請求文法
POST /ObjectName?uploads HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT date
Authorization: SignatureValue
要求標頭
初始化Multipart Upload請求時,支援標準的HTTP要求標頭Cache-Control、Content-Disposition、Content-Encoding、Content-Type、Expires以及以x-oss-meta-
開頭的使用者自訂Header。更多資訊,請參見PutObject。
名稱 | 類型 | 描述 |
Cache-Control | 字串 | 指定該Object被下載時的網頁的緩衝行為。更多資訊,請參見RFC 2616。 預設值:無 |
Content-Disposition | 字串 | 指定該Object被下載時的名稱。更多資訊,請參見RFC 2616。 預設值:無 |
Content-Encoding | 字串 | 指定該Object被下載時的內容編碼格式。更多資訊,請參見RFC 2616。 預設值:無 |
Expires | 整數 | 緩衝內容的到期時間,單位為毫秒。更多資訊,請參見RFC 2616。 預設值:無 |
x-oss-forbid-overwrite | 字串 | 指定InitiateMultipartUpload操作時是否覆蓋同名Object。當目標Bucket處於已開啟或已暫停版本控制狀態時,x-oss-forbid-overwrite請求Header設定無效,即允許覆蓋同名Object。
設定x-oss-forbid-overwrite請求Header會導致QPS處理效能下降,如果您有大量的操作需要使用x-oss-forbid-overwrite請求Header(QPS>1000),請聯絡支援人員,避免影響您的業務。 |
x-oss-server-side-encryption | 字串 | 指定上傳該Object的每個part時使用的伺服器端加密方式。 取值:AES256、KMS 重要 使用KMS密碼編譯演算法前,您需要先開通Key Management Service。 指定此參數後,在回應標頭中會返回此參數,OSS會對上傳的每個part進行加密編碼儲存。當下載該Object時,回應標頭中會包含x-oss-server-side-encryption,且該值會被設定成此Object的密碼編譯演算法。 |
x-oss-server-side-encryption-key-id | 字串 | 表示KMS託管的使用者主要金鑰。 該參數在x-oss-server-side-encryption值為KMS時有效。 |
x-oss-storage-class | 字串 | 指定Object的儲存類型。 對於任意儲存類型Bucket,如果上傳Object時指定該值,則此次上傳的Object將儲存為指定的類型。例如在IA類型的Bucket中上傳Object時,如果指定x-oss-storage-class為Standard,則該Object直接儲存為Standard類型。 取值:
更多資訊,請參見儲存類型介紹。 |
x-oss-tagging | 字串 | 指定Object的標籤,可同時設定多個標籤,例如: TagA=A&TagB=B 說明 Key和Value需要先進行URL編碼,如果某項沒有 |
請求參數
調用此介面時,可以通過encoding-type對返回結果中的Key進行編碼。
名稱 | 類型 | 描述 |
encoding-type | 字串 | 指定對返回的Key進行編碼,目前支援URL編碼。Key使用UTF-8字元,但XML 1.0標準不支援解析一些控制字元,例如ASCII值從0到10的字元。對於Key中包含XML 1.0標準不支援的控制字元,可以通過指定encoding-type對返回的Key進行編碼。 預設值:無 可選值:url |
響應元素
伺服器收到初始化Multipart Upload請求後,會返回一個XML格式的響應體。該響應體內包含Bucket、Key和UploadID三個元素。
名稱 | 類型 | 描述 |
InitiateMultipartUploadResult | 容器 | 儲存Initiate Multipart Upload請求結果的容器。 子節點:Bucket, Key, UploadId, EncodingType 父節點:None |
Bucket | 字串 | 初始化一個Multipart Upload事件的Bucket名稱。 父節點:InitiateMultipartUploadResult |
Key | 字串 | 初始化一個Multipart Upload事件的Object名稱。 父節點:InitiateMultipartUploadResult |
UploadId | 字串 | 唯一標識此次Multipart Upload事件的ID,用於後續調用UploadPart和CompleteMultipartUpload介面。 父節點:InitiateMultipartUploadResult |
EncodingType | 字串 | 指明返回結果中編碼使用的類型。如果請求的參數中指定了encoding-type,那返回的結果會對Key進行編碼。 父節點:InitiateMultipartUploadResult |
此介面還包含其他公用回應標頭。更多資訊,請參見公用回應標頭(Common Response Headers)。
樣本
請求樣本
POST /multipart.data?uploads HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Wed, 22 Feb 2012 08:32:21 GMT x-oss-storage-class: Archive Authorization: OSS qn6q**************:77Dv****************
返回樣本
HTTP/1.1 200 OK Content-Length: 230 Server: AliyunOSS Connection: keep-alive x-oss-request-id: 42c25703-7503-fbd8-670a-bda01eae**** 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>oss-example</Bucket> <Key>multipart.data</Key> <UploadId>0004B9894A22E5B1888A1E29F823****</UploadId> </InitiateMultipartUploadResult>
SDK
錯誤碼
錯誤碼 | HTTP狀態代碼 | 描述 |
InvalidEncryptionAlgorithmError | 400 | 指定OSS伺服器端除AES256、KMS以外的加密方式。 |
InvalidArgument | 400 | 在上傳每個part時繼續添加x-oss-server-side-encryption要求標頭。 |
InvalidArgument | 400 | 指定儲存類型的值不合法。 |
KmsServiceNotEnabled | 403 | 使用KMS密碼編譯演算法時,沒有在控制台開通Key Management Service。 |
FileAlreadyExists | 409 | 返回該錯誤的可能原因如下:
|