華為云計(jì)算 云知識(shí) 初始化上傳段任務(wù)InitiateMultipartUpload
初始化上傳段任務(wù)InitiateMultipartUpload

 

接口說(shuō)明

初始化上傳段任務(wù)

使用多段上傳特性時(shí),用戶必須首先調(diào)用創(chuàng)建多段上傳任務(wù)接口創(chuàng)建任務(wù),系統(tǒng)會(huì)給用戶返回一個(gè)全局唯一的多段上傳任務(wù)號(hào),作為任務(wù)標(biāo)識(shí)。后續(xù)用戶可以根據(jù)這個(gè)標(biāo)識(shí)發(fā)起相關(guān)的請(qǐng)求,如:上傳段、合并段、列舉段等。創(chuàng)建多段上傳任務(wù)不影響已有的同名對(duì)象;同一個(gè)對(duì)象可以同時(shí)存在多個(gè)多段上傳任務(wù);每個(gè)多段上傳任務(wù)在初始化時(shí)可以附加消息頭信息,包括acl、用戶自定義元數(shù)據(jù)和通用的HTTP消息頭contentType、contentEncoding等,這些附加的消息頭信息將先記錄在多段上傳任務(wù)元數(shù)據(jù)中。

該操作支持服務(wù)端加密功能

URL
POST  https://obs.cn-north-4.myhuaweicloud.com/{object_key} 
請(qǐng)求參數(shù)
名稱 類(lèi)型 IN 必選 描述
Authorization
 
string header

請(qǐng)求消息中可帶的簽名信息。

Date
 
string header

請(qǐng)求發(fā)起端的日期和時(shí)間,例如:Wed, 27 Jun 2018 13:39:15 +0000。 默認(rèn)值:無(wú)。 條件:如果消息頭中帶了x-obs-date字段,則可以不帶該字段,其他情況下必選。

x-obs-acl
 
string header

初始化多段上傳任務(wù)時(shí),可以加上此消息頭設(shè)置對(duì)象的權(quán)限控制策略,使用的策略為預(yù)定義的常用策略,包括:private;public-read;public-read-write(各策略詳細(xì)說(shuō)明見(jiàn)ACL章節(jié)的“使用頭域設(shè)置ACL”) 說(shuō)明:字符串形式的預(yù)定義策略。 實(shí)例x-obs-acl: public-read-write

x-obs-grant-read
 
string header

初始化多段上傳任務(wù)時(shí),使用此頭域授權(quán)domain下所有用戶有讀對(duì)象和獲取對(duì)象元數(shù)據(jù)的權(quán)限 實(shí)例x-obs-grant-read: ID=domainID。如果授權(quán)給多個(gè)租戶,需要通過(guò)','分割

x-obs-grant-read-acp
 
string header

初始化多段上傳任務(wù)時(shí),使用此頭域授權(quán)domain下所有用戶有獲取對(duì)象ACL的權(quán)限 實(shí)例x-obs-grant-read-acp: ID=domainID。如果授權(quán)給多個(gè)租戶,需要通過(guò)','分割

x-obs-grant-write-acp
 
string header

初始化多段上傳任務(wù)時(shí),使用此頭域授權(quán)domain下所有用戶有寫(xiě)對(duì)象ACL的權(quán)限。 實(shí)例x-obs-grant-write-acp: ID=domainID。如果授權(quán)給多個(gè)租戶,需要通過(guò)','分割。

x-obs-grant-full-control
 
string header

初始化多段上傳任務(wù)時(shí),使用此頭域授權(quán)domain下所有用戶有讀對(duì)象、獲取對(duì)象元數(shù)據(jù)、獲取對(duì)象ACL、寫(xiě)對(duì)象ACL的權(quán)限。 實(shí)例x-obs-grant-full-control: ID=domainID。如果授權(quán)給多個(gè)租戶,需要通過(guò)','分割。

x-obs-storage-class
 
string header

初始化多段上傳任務(wù)時(shí),可以加上此頭域設(shè)置對(duì)象的存儲(chǔ)類(lèi)型。如果未設(shè)置此頭域,則以桶的默認(rèn)存儲(chǔ)類(lèi)型作為對(duì)象的存儲(chǔ)類(lèi)型。

類(lèi)型:字符串

說(shuō)明:存儲(chǔ)類(lèi)型有3種:STANDARD(標(biāo)準(zhǔn)存儲(chǔ))、WARM(低頻訪問(wèn)存儲(chǔ))、COLD(歸檔存儲(chǔ))。因此這里可配置的值有:STANDARD、WARM和COLD,注意大小寫(xiě)敏感。

示例:x-obs-storage-class: STANDARD

x-obs-persistent-headers
 
string header

初始化多段上傳任務(wù)時(shí),可以在HTTP請(qǐng)求中加入“x-obs-persistent-headers”消息頭,用來(lái)加入一個(gè)或多個(gè)自定義的響應(yīng)頭,當(dāng)完成合并段操作后,用戶獲取此對(duì)象或查詢此對(duì)象元數(shù)據(jù)時(shí),加入的自定義響應(yīng)頭將會(huì)在返回消息的頭域中出現(xiàn)。

類(lèi)型:字符串

格式:x-obs-persistent-headers: key1:base64_encode(value1),key2:base64_encode(value2)....

說(shuō)明:其中key1/key2等為自定義header,若含有非ASCII碼或不可識(shí)別字符,可以采用URL編碼或者Base64編碼,服務(wù)端只會(huì)作為字符串處理,不會(huì)做解碼。value1/value2等為對(duì)應(yīng)自定義header的值,base64_encode指做base64編碼,即將自定義header和對(duì)應(yīng)值的base64編碼作為一個(gè)key-value對(duì)用“:”連接,然后用“,”將所有的key-value對(duì)連接起來(lái),放在x-obs-persistent-headers這個(gè)header中即可,服務(wù)端會(huì)對(duì)上傳的value做解碼處理。

示例:x-obs-persistent-headers: key1:dmFsdWUx,key2:dmFsdWU

合并段后,下載此對(duì)象或獲取此對(duì)象元數(shù)據(jù)時(shí):返回兩個(gè)頭域分別為“key1:value1”與“key2:value2”

約束:

  1. 通過(guò)該方式指定的自定義響應(yīng)頭不能以“x-obs-”為前綴,比如可以指定“key1”,但是不能指定“x-obs-key1”

  2. 不能指定http標(biāo)準(zhǔn)頭,例如host/content-md5/origin/range/Content-Disposition等

  3. 此頭域和自定義元數(shù)據(jù)總長(zhǎng)度不能超過(guò)8KB

  4. 如果傳入相同key,將value以“,”拼接后放入同一個(gè)key中返回

x-obs-server-side-encryption
 
string header

使用該頭域表示服務(wù)端加密是SSE-KMS方式。

類(lèi)型:字符串

示例:x-obs-server-side-encryption:kms 當(dāng)使用SSE-KMS方式時(shí),必選

x-obs-server-side-encryption-kms-key-id
 
string header

SSE-KMS方式下使用該頭域,該頭域表示主密鑰,如果用戶沒(méi)有提供該頭域,那么默認(rèn)的主密鑰將會(huì)被使用。 類(lèi)型:字符串 支持兩種格式的描述方式:

  1. regionID:domainID(租戶ID):key/key_id 或者 2.key_id 其中regionID是使用密鑰所屬region的ID;domainID是使用密鑰所屬租戶的租戶ID;key_id是從 數(shù)據(jù)加密 服務(wù)創(chuàng)建的密鑰ID。

示例:

  1. x-obs-server-side-encryption-kms-key-id:cn-north-4:domainiddomainiddomainiddoma0001:key/4f1cd4de-ab64-4807-920a-47fc42e7f0d0 或者
  2. x-obs-server-side-encryption-kms-key-id:4f1cd4de-ab64-4807-920a-47fc42e7f0d0
x-obs-server-side-encryption-customer-algorithm
 
string header

SSE-C方式下使用該頭域,該頭域表示加密使用的算法。

類(lèi)型:字符串

示例:x-obs-server-side-encryption-customer-algorithm:AES256

約束:需要和x-obs-server-side-encryption-customer-key, x-obs-server-side-encryption-customer-key-MD5一起使用。 當(dāng)使用SSE-C方式時(shí),必選。

x-obs-server-side-encryption-customer-key
 
string header

SSE-C方式下使用該頭域,該頭域表示加密使用的密鑰。該密鑰用于加密對(duì)象。

類(lèi)型:字符串

示例:x-obs-server-side-encryption-customer-key:K7QkYpBkM5+hcs27fsNkUnNVaobncnLht/rCB2o/9Cw=

約束:該頭域由256-bit的密鑰經(jīng)過(guò)base64-encoded得到,需要和x-obs-server-side-encryption-customer-algorithm,x-obs-server-side-encryption-customer-key-MD5一起使用。 當(dāng)使用SSE-C方式時(shí),必選。

x-obs-server-side-encryption-customer-key-MD5
 
string header

SSE-C方式下使用該頭域,該頭域表示加密使用的密鑰的MD5值。MD5值用于驗(yàn)證密鑰傳輸過(guò)程中沒(méi)有出錯(cuò)。

類(lèi)型:字符串

示例:x-obs-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ==

約束:該頭域由密鑰的128-bit MD5值經(jīng)過(guò)base64-encoded得到,需要和x-obs-server-side-encryption-customer-algorithm,x-obs-server-side-encryption-customer-key一起使用。 當(dāng)使用SSE-C方式時(shí),必選。

x-obs-expires
 
integer header

表示對(duì)象的過(guò)期時(shí)間,單位是天。過(guò)期之后對(duì)象會(huì)被自動(dòng)刪除。(從對(duì)象最后修改時(shí)間開(kāi)始計(jì)算)

類(lèi)型:整型。

示例:x-obs-expires:3

object_key
 
string path

通過(guò)此請(qǐng)求創(chuàng)建的對(duì)象名稱。

bucket_name
 
string query

桶名稱

uploads
 
string query

表明這是多段上傳任務(wù)

encoding-type
 
string query

對(duì)響應(yīng)中的Key進(jìn)行指定類(lèi)型的編碼。如果Key包含xml 1.0標(biāo)準(zhǔn)不支持的控制字符,可通過(guò)設(shè)置encoding-type對(duì)響應(yīng)中的Key進(jìn)行編碼。

返回參數(shù)
返回碼: 200

請(qǐng)求成功響應(yīng)消息。

名稱 類(lèi)型 必選 描述
Content-Length
 
string

響應(yīng)消息體的字節(jié)長(zhǎng)度。

Connection
 
string

指明與服務(wù)器的連接是長(zhǎng)連接還是短連接。

Date
 
string

OBS系統(tǒng)響應(yīng)的時(shí)間。

ETag
 
string

對(duì)象的base64編碼的128位MD5摘要。ETag是對(duì)象內(nèi)容的唯一標(biāo)識(shí),可以通過(guò)該值識(shí)別對(duì)象內(nèi)容是否有變化。比如上傳對(duì)象時(shí)ETag為A,下載對(duì)象時(shí)ETag為B,則說(shuō)明對(duì)象內(nèi)容發(fā)生了變化。實(shí)際的ETag是對(duì)象的哈希值。ETag只反映變化的內(nèi)容,而不是其元數(shù)據(jù)。上傳的對(duì)象或拷貝操作創(chuàng)建的對(duì)象,通過(guò)MD5加密后都有唯一的ETag。如果通過(guò)多段上傳對(duì)象,則無(wú)論加密方法如何,MD5會(huì)拆分ETag,此類(lèi)情況ETag就不是MD5的摘要。

x-obs-id-2
 
string

幫助定位問(wèn)題的特殊符號(hào)。

x-obs-request-id
 
string

由OBS創(chuàng)建來(lái)唯一確定本次請(qǐng)求的值,可以通過(guò)該值來(lái)定位問(wèn)題。

x-obs-server-side-encryption
 
string

如果服務(wù)端加密是SSE-KMS方式,響應(yīng)包含該頭域。

類(lèi)型:字符串

示例:x-obs-server-side-encryption:kms

x-obs-server-side-encryption-kms-key-id
 
string

如果服務(wù)端加密是SSE-KMS方式,響應(yīng)包含該頭域,該頭域表示主密鑰。

類(lèi)型:字符串

格式為: regionID:domainID(租戶ID):key/key_id

其中regionID是使用密鑰所屬region的ID;domainID是使用密鑰所屬租戶的租戶ID;key_id是本次加密使用的密鑰ID。

示例: x-obs-server-side-encryption-kms-key-id:cn-north-4:domainiddomainiddomainiddoma0001:key/4f1cd4de-ab64-4807-920a-47fc42e7f0d0

x-obs-server-side-encryption-customer-algorithm
 
string

如果服務(wù)端加密是SSE-C方式,響應(yīng)包含該頭域,該頭域表示加密使用的算法。

類(lèi)型:字符串

示例:x-obs-server-side-encryption-customer-algorithm:AES256

x-obs-server-side-encryption-customer-key-MD5
 
string

如果服務(wù)端加密是SSE-C方式,響應(yīng)包含該頭域,該頭域表示加密使用的密鑰的MD5值。

類(lèi)型:字符串

示例:x-obs-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ==

名稱 類(lèi)型 必選 描述
Bucket
 
string

多段上傳對(duì)象所在桶的桶名。

Key
 
string

多段上傳對(duì)象的key。

UploadId
 
string

多段上傳id,后面進(jìn)行多段上傳時(shí),利用這個(gè)id指定多段上傳任務(wù)。

EncodingType
 
string

多段上傳對(duì)象Key的編碼類(lèi)型。如果請(qǐng)求中設(shè)置了encoding-type,那響應(yīng)中的Key會(huì)被編碼。

返回碼: 400

請(qǐng)求失敗響應(yīng)消息。

名稱 類(lèi)型 必選 描述
Code
 
string

錯(cuò)誤響應(yīng)消息體XML中錯(cuò)誤響應(yīng)對(duì)應(yīng)的HTTP消息返回碼,具體的錯(cuò)誤碼請(qǐng)參見(jiàn)錯(cuò)誤碼-表2。

Message
 
string

錯(cuò)誤響應(yīng)消息體XML中具體錯(cuò)誤更全面、詳細(xì)的英文解釋,具體的錯(cuò)誤消息請(qǐng)參見(jiàn)錯(cuò)誤碼-表2。

RequestId
 
string

本次錯(cuò)誤請(qǐng)求的請(qǐng)求ID,用于錯(cuò)誤定位。

HostId
 
string

返回該消息的服務(wù)端ID。

Resource
 
string

該錯(cuò)誤相關(guān)的桶或?qū)ο筚Y源。

返回碼: 403

請(qǐng)求失敗響應(yīng)消息。 除了公共的錯(cuò)誤碼外,此接口還會(huì)返回一些其他的錯(cuò)誤碼。下面列出本接口的一些常見(jiàn)錯(cuò)誤,以及可能原因。

錯(cuò)誤碼 描述 HTTP狀態(tài)碼
AccessDenied AccessKey或簽名無(wú)效。 403 Forbidden
AccessDenied 用戶不具有指定桶的寫(xiě)權(quán)限。 403 Forbidden
名稱 類(lèi)型 必選 描述
Code
 
string

錯(cuò)誤響應(yīng)消息體XML中錯(cuò)誤響應(yīng)對(duì)應(yīng)的HTTP消息返回碼,具體的錯(cuò)誤碼請(qǐng)參見(jiàn)錯(cuò)誤碼-表2。

Message
 
string

錯(cuò)誤響應(yīng)消息體XML中具體錯(cuò)誤更全面、詳細(xì)的英文解釋,具體的錯(cuò)誤消息請(qǐng)參見(jiàn)錯(cuò)誤碼-表2。

RequestId
 
string

本次錯(cuò)誤請(qǐng)求的請(qǐng)求ID,用于錯(cuò)誤定位。

HostId
 
string

返回該消息的服務(wù)端ID。

Resource
 
string

該錯(cuò)誤相關(guān)的桶或?qū)ο筚Y源。

返回碼: 404

請(qǐng)求失敗響應(yīng)消息。 除了公共的錯(cuò)誤碼外,此接口還會(huì)返回一些其他的錯(cuò)誤碼。下面列出本接口的一些常見(jiàn)錯(cuò)誤,以及可能原因。

錯(cuò)誤碼 描述 HTTP狀態(tài)碼
NoSuchBucket 桶不存在。 404 Not Found
名稱 類(lèi)型 必選 描述
Code
 
string

錯(cuò)誤響應(yīng)消息體XML中錯(cuò)誤響應(yīng)對(duì)應(yīng)的HTTP消息返回碼,具體的錯(cuò)誤碼請(qǐng)參見(jiàn)錯(cuò)誤碼-表2。

Message
 
string

錯(cuò)誤響應(yīng)消息體XML中具體錯(cuò)誤更全面、詳細(xì)的英文解釋,具體的錯(cuò)誤消息請(qǐng)參見(jiàn)錯(cuò)誤碼-表2

RequestId
 
string

本次錯(cuò)誤請(qǐng)求的請(qǐng)求ID,用于錯(cuò)誤定位。

HostId
 
string

返回該消息的服務(wù)端ID。

Resource
 
string

該錯(cuò)誤相關(guān)的桶或?qū)ο筚Y源。

請(qǐng)求示例
示例 1

初始化段

 
"POST /objectkey?uploads"
 
"POST /objectkey?uploads HTTP/1.1 \nHost: examplebucket.obs.cn-north-4.myhuaweicloud.com\nDate: WED, 01 Jul 2015 05:14:52 GMT \nAuthorization: OBS AKIAIOSFODNN7EXAMPLE:VGhpcyBtZXNzYWdlIHNpZ25lZGGieSRlbHZpbmc="
示例 2

初始化段的同時(shí)攜帶ACL

 
"POST /objectkey?uploads"
 
"POST /objectkey?uploads HTTP/1.1 \nHost: examplebucket.obs.cn-north-4.myhuaweicloud.com\nDate: WED, 01 Jul 2015 05:15:43 GMT\nx-obs-grant-write-acp:ID=52f24s3593as5730ea4f722483579ai7,ID=a93fcas852f24s3596ea8366794f7224\nAuthorization: OBS AKIAIOSFODNN7EXAMPLE:VGhpcyBtZXNzYWdlIHNpZ25lZGGieSRlbHZpbmc="
返回示例
返回碼:200

請(qǐng)求成功響應(yīng)消息。

示例 1
 
HTTP/1.1 status_code Date: date Content-Length: length Connection: status <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <InitiateMultipartUploadResult xmlns="http://obs.cn-north-4.myhuaweicloud.com/doc/2015-06-30/"> <Bucket>BucketName</Bucket> <Key>ObjectName</Key> <UploadId>uploadID</UploadId> </InitiateMultipartUploadResult>
錯(cuò)誤碼
請(qǐng)參考 錯(cuò)誤碼說(shuō)明。