全部產品
Search
文件中心

Object Storage Service:InitiateMultipartUpload

更新時間:Jun 19, 2024

使用Multipart Upload模式傳輸資料前,您必須先調用InitiateMultipartUpload介面來通知OSS初始化一個Multipart Upload事件。

注意事項

  • 調用介面會返回一個OSS伺服器建立的全域唯一的Upload ID,用於標識本次Multipart Upload事件。您可以根據這個ID來發起相關的操作,例如中止Multipart Upload、查詢Multipart Upload等。

  • 初始化Multipart Upload請求不影響已存在的同名Object。

  • InitiateMultipartUpload操作計算認證簽名時,需要添加?uploadsCanonicalizedResource中。

  • 要通知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或者指定x-oss-forbid-overwritefalse時,表示允許覆蓋同名Object。

  • 指定x-oss-forbid-overwritetrue時,表示禁止覆蓋同名Object。

設定x-oss-forbid-overwrite請求Header會導致QPS處理效能下降,如果您有大量的操作需要使用x-oss-forbid-overwrite請求Header(QPS>1000),請聯絡支援人員,避免影響您的業務。

x-oss-server-side-encryption

字串

指定上傳該Object的每個part時使用的伺服器端加密方式。

取值:AES256KMS

重要

使用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類型。

取值:

  • Standard:標準儲存

  • IA:低頻訪問

  • Archive:Archive Storage

  • ColdArchive:冷Archive Storage

  • DeepColdArchive:深度冷Archive Storage

    重要

    如果要上傳的檔案數量較多,直接指定上傳的檔案類型為深度冷歸檔類型會造成較高的PUT類請求費用。建議您先將檔案的儲存類型指定為標準儲存進行上傳,然後通過生命週期規則將其轉儲為深度冷歸檔類型,從而降低PUT類請求費用。

更多資訊,請參見儲存類型介紹

x-oss-tagging

字串

指定Object的標籤,可同時設定多個標籤,例如: TagA=A&TagB=B

說明

Key和Value需要先進行URL編碼,如果某項沒有=,則看作Value為空白字元串。

請求參數

調用此介面時,可以通過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,用於後續調用UploadPartCompleteMultipartUpload介面。

父節點: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

此介面所對應的各語言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

返回該錯誤的可能原因如下:

  • 請求Header中攜帶了x-oss-forbid-overwrite=true來禁止覆蓋同名檔案,但是Bucket中已有同名檔案。

  • Bucket開啟階層命名空間後,當您要在該Bucket中初始化一個Multipart Upload事件時,設定的Object為目錄。