上傳對象操作是指在指定的桶內(nèi)增加一個對象,執(zhí)行該操作需要用戶擁有桶的寫權(quán)限。
說明: 同一個桶中存儲的對象名是唯一的。
在桶未開啟多版本的情況下,如果在指定的桶內(nèi)已經(jīng)有相同的對象鍵值的對象,用戶上傳的新對象會覆蓋原來的對象;為了確保數(shù)據(jù)在傳輸過程中沒有遭到破壞,用戶可以在表單域中加入Content-MD5參數(shù)。在這種情況下,OBS收到上傳的對象后,會對對象進行MD5校驗,如果不一致則返回出錯信息。用戶還可以在上傳對象時指定x-obs-acl參數(shù),設(shè)置對象的權(quán)限控制策略。
用戶除了可以用PUT直接上傳對象外,還可以使用POST上傳對象。
單次上傳對象大小范圍是[0, 5GB],如果需要上傳超過5GB的大文件,需要通過多段操作來分段上傳。
該操作支持服務(wù)端加密功能。
與PUT上傳的區(qū)別
PUT上傳中參數(shù)通過請求頭域傳遞;POST上傳則作為消息體中的表單域傳遞。
PUT上傳需在URL中指定對象名;POST上傳提交的URL為桶域名,無需指定對象名。兩者的請求行分別為:
PUT /ObjectName HTTP/1.1
POST / HTTP/1.1
關(guān)于PUT上傳的更多詳細信息,請參考PUT上傳。
多版本
如果桶的多版本狀態(tài)是開啟的,系統(tǒng)會自動為對象生成一個唯一的版本號;如果桶的多版本狀態(tài)是暫停的,則系統(tǒng)生成的對象版本號為null,并由響應(yīng)報頭x-obs-version-id返回該版本號。關(guān)于桶的多版本狀態(tài),參見設(shè)置桶的多版本狀態(tài)。
| 名稱 | 類型 | IN | 必選 | 描述 |
|---|---|---|---|---|
|
bucket_name
|
string | query | 是 |
桶名稱 |
|
file
|
file | formData | 是 |
上傳的對象的內(nèi)容。 |
|
key
|
string | formData | 是 |
通過此請求創(chuàng)建的對象名稱。 |
|
Authorization
|
string | header | 是 |
請求消息中可帶的簽名信息。 |
|
Date
|
string | header | 否 |
請求發(fā)起端的日期和時間,例如:Wed, 27 Jun 2018 13:39:15 +0000。 默認值:無。 條件:如果消息頭中帶了x-obs-date字段,則可以不帶該字段,其他情況下必選。 |
|
Origin
|
string | header | 是 |
預(yù)請求指定的跨域請求Origin(通常為域名)。 |
|
Access-Control-Request-Headers
|
string | header | 否 |
實際請求可以帶的HTTP頭域,可以帶多個頭域。 |
|
AccessKeyId
|
string | formData | 否 |
用來指明請求發(fā)起者的Access Key。 約束條件:如果該請求包括安全策略參數(shù)policy或signature時,則必須包括此參數(shù)。 |
|
policy
|
string | formData | 否 |
該請求的安全策略描述。 限制:當Bucket提供了AccessKeyId(或signature)表單域時,則必須包括此參數(shù)。 |
|
signature
|
string | formData | 否 |
根據(jù)StringToSign計算出的簽名字符串。 限制:當Bucket提供了AccessKeyId(或policy)表單域時,則必須包括此參數(shù)。 |
|
token
|
string | formData | 否 |
用來統(tǒng)一指明請求發(fā)起者的AccessKey,請求簽名和請求的安全策略。 token的優(yōu)先級高于單獨指定的AccessKey,請求簽名和請求的安全策略。 示例: HTML中:<input type="text" name="token" value="ak:signature:policy" /> |
|
x-obs-acl
|
string | formData | 否 |
創(chuàng)建對象時,可以加上此消息頭設(shè)置對象的權(quán)限控制策略,使用的策略為預(yù)定義的常用策略,包括:private;public-read;public-read-write;bucket-owner-full-control(各策略詳細說明見ACL章節(jié)的“使用頭域設(shè)置ACL”)。 示例: POLICY中:{"acl": "public-read" }, HTML中:<input type="text" name="acl" value="public-read" /> |
|
x-obs-grant-read
|
string | formData | 否 |
創(chuàng)建對象時,使用此頭域授權(quán)domain下所有用戶有讀對象和獲取對象元數(shù)據(jù)的權(quán)限。 示例: POLICY中:{"grant-read": "id=domainId1" }, HTML中:<input type="text" name="grant-read" value="id=domainId1" /> |
|
x-obs-grant-read-acp
|
string | formData | 否 |
創(chuàng)建對象時,使用此頭域授權(quán)domain下所有用戶有獲取對象ACL的權(quán)限。 示例: POLICY中:{"grant-read-acp": "id=domainId1" }, HTML中:<input type="text" name="grant-read-acp" value="id=domainId1" /> |
|
x-obs-grant-write-acp
|
string | formData | 否 |
創(chuàng)建對象時,使用此頭域授權(quán)domain下所有用戶有寫對象ACL的權(quán)限。 示例: POLICY中:{"grant-write-acp": "id=domainId1" }, HTML中:<input type="text" name="grant-write-acp" value="id=domainId1" /> |
|
x-obs-grant-full-control
|
string | formData | 否 |
創(chuàng)建對象時,使用此頭域授權(quán)domain下所有用戶有讀對象、獲取對象元數(shù)據(jù)、獲取對象ACL、寫對象ACL的權(quán)限。 示例: POLICY中:{"grant-full-control": "id=domainId1" }, HTML中:<input type="text" name="grant-full-control" value="id=domainId1" /> |
|
x-obs-storage-class
|
string | formData | 否 |
創(chuàng)建對象時,可以加上此頭域設(shè)置對象的存儲類型。如果未設(shè)置此頭域,則以桶的默認存儲類型作為對象的存儲類型。 示例: POLICY中:{"storage-class": "STANDARD" }, HTML中:<input type="text" name="x-obs-storage-class" value="STANDARD" /> |
|
success_action_redirect
|
string | formData | 否 |
此參數(shù)的值是一個URL,用于指定當此次請求操作成功響應(yīng)后的重定向的地址。 如果此參數(shù)值有效且操作成功,響應(yīng)碼為303,Location頭域由此參數(shù)以及桶名、對象名、對象的ETag組成。 如果此參數(shù)值無效,則OBS忽略此參數(shù)的作用,響應(yīng)碼為204,Location頭域為對象地址。 示例: POLICY中:{"success_action_redirect": "http://123458.com"}, HTML中:<input type="text" name="success_action_redirect" value="http://123458.com" /> |
|
x-obs-meta-xxx
|
string | formData | 否 |
創(chuàng)建對象時,可以在HTTP請求中加入“x-obs-meta-”消息頭或以“x-obs-meta-”開頭的消息頭,用來加入自定義的元數(shù)據(jù),以便對對象進行自定義管理。當用戶獲取此對象或查詢此對象元數(shù)據(jù)時,加入的自定義元數(shù)據(jù)將會在返回消息的消息頭中出現(xiàn)。更多說明詳見對象自定義元數(shù)據(jù)介紹。 示例: POLICY中:{" x-obs-meta-test ": " test metadata " }, HTML中:<input type="text" name=" x-obs-meta-test " value=" test metadata " /> |
|
x-obs-persistent-headers
|
string | formData | 否 |
創(chuàng)建對象時,可以在HTTP請求中加入“x-obs-persistent-headers”消息頭,用來加入一個或多個自定義的響應(yīng)頭,當用戶獲取此對象或查詢此對象元數(shù)據(jù)時,加入的自定義響應(yīng)頭將會在返回消息的頭域中出現(xiàn)。 示例: POLICY中:{"x-obs-persistent-headers": "key1:dmFsdWUx,key2:dmFsdWUy" }, HTML中:<input type="text" name="x-obs-persistent-headers" value="key1:dmFsdWUx,key2:dmFsdWUy" /> 下載此對象或獲取此對象元數(shù)據(jù)時:返回兩個頭域分別為“key1:value1”與“key2:value2” 約束:
|
|
success_action_status
|
string | formData | 否 |
這個參數(shù)指定成功響應(yīng)的狀態(tài)碼,允許設(shè)定的值為200,201,204。 如果此參數(shù)值被設(shè)定為200或204,OBS響應(yīng)消息中body為空。 如果此參數(shù)值被設(shè)定為201,則OBS響應(yīng)消息中包含一個XML文檔描述此次請求的響應(yīng)。 當請求不協(xié)帶此參數(shù)或參數(shù)無效時,OBS響應(yīng)碼為204。 類型:字符串。 示例: POLICY中:["starts-with", "$success_action_status", ""], HTML中:<input type="text" name="success_action_status" value="200" /> |
|
x-obs-website-redirect-location
|
string | formData | 否 |
當桶設(shè)置了Website配置,可以將獲取這個對象的請求重定向到桶內(nèi)另一個對象或一個外部的URL,OBS將這個值從頭域中取出,保存在對象的元數(shù)據(jù)中。 約束:必須以“/”、“http://”或“https://”開頭,長度不超過2K。 |
|
x-obs-server-side-encryption
|
string | formData | 否 |
使用該頭域表示服務(wù)端加密是SSE-KMS方式。 示例:x-obs-server-side-encryption:kms |
|
x-obs-server-side-encryption-kms-key-id
|
string | formData | 否 |
SSE-KMS方式下使用該頭域,該頭域表示主密鑰,如果用戶沒有提供該頭域,那么默認的主密鑰將會被使用。 支持兩種格式的描述方式: 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 | formData | 否 |
SSE-C方式下使用該頭域,該頭域表示加密使用的算法。 示例:x-obs-server-side-encryption-customer-algorithm:AES256 約束:需要和x-obs-server-side-encryption-customer-key, x-obs-server-side-encryption-customer-key-MD5一起使用。 |
|
x-obs-server-side-encryption-customer-key
|
string | formData | 否 |
SSE-C方式下使用該頭域,該頭域表示加密使用的密鑰。該密鑰用于加密對象。 示例:x-obs-server-side-encryption-customer-key:K7QkYpBkM5+hcs27fsNkUnNVaobncnLht/rCB2o/9Cw= 約束:該頭域由256-bit的密鑰經(jīng)過base64-encoded得到,需要和x-obs-server-side-encryption-customer-algorithm,x-obs-server-side-encryption-customer-key-MD5一起使用。 |
|
x-obs-server-side-encryption-customer-key-MD5
|
string | formData | 否 |
SSE-C方式下使用該頭域,該頭域表示加密使用的密鑰的MD5值。MD5值用于驗證密鑰傳輸過程中沒有出錯。 示例:x-obs-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ== 約束: 該頭域由密鑰的128-bit MD5值經(jīng)過base64-encoded得到,需要和x-obs-server-side-encryption-customer-algorithm,x-obs-server-side-encryption-customer-key一起使用。 |
|
x-obs-expires
|
integer | formData | 否 |
表示對象的過期時間,單位是天。過期之后對象會被自動刪除。(從對象最后修改時間開始計算) 示例:x-obs-expires:3 |
服務(wù)器成功返回用戶請求的數(shù)據(jù)。
| 名稱 | 類型 | 必選 | 描述 |
|---|---|---|---|
|
Content-Length
|
string | 否 |
響應(yīng)消息體的字節(jié)長度。 |
|
Connection
|
string | 否 |
指明與服務(wù)器的連接是長連接還是短連接。 |
|
Date
|
string | 否 |
OBS系統(tǒng)響應(yīng)的時間。 |
|
ETag
|
string | 否 |
對象的base64編碼的128位MD5摘要。ETag是對象內(nèi)容的唯一標識,可以通過該值識別對象內(nèi)容是否有變化。比如上傳對象時ETag為A,下載對象時ETag為B,則說明對象內(nèi)容發(fā)生了變化。實際的ETag是對象的哈希值。ETag只反映變化的內(nèi)容,而不是其元數(shù)據(jù)。上傳的對象或拷貝操作創(chuàng)建的對象,通過MD5加密后都有唯一的ETag。如果通過多段上傳對象,則無論加密方法如何,MD5會拆分ETag,此類情況ETag就不是MD5的摘要。 |
|
x-obs-id-2
|
string | 否 |
幫助定位問題的特殊符號。 |
|
x-obs-request-id
|
string | 否 |
由OBS創(chuàng)建來唯一確定本次請求的值,可以通過該值來定位問題。 |
|
x-obs-version-id
|
string | 否 |
對象的版本號。如果桶的多版本狀態(tài)為開啟,則會返回對象的版本號。如果桶的多版本狀態(tài)為暫停,則會返回null。 |
|
Access-Control-Allow-Origin
|
string | 否 |
當桶設(shè)置了CORS配置,如果請求的Origin滿足服務(wù)端的CORS配置,則在響應(yīng)中包含這個Origin。 |
|
Access-Control-Allow-Headers
|
string | 否 |
當桶設(shè)置了CORS配置,如果請求的headers滿足服務(wù)端的CORS配置,則在響應(yīng)中包含這個headers |
|
Access-Control-Max-Age
|
integer | 否 |
當桶設(shè)置了CORS配置,服務(wù)端CORS配置中的MaxAgeSeconds。 |
|
Access-Control-Allow-Methods
|
string | 否 |
當桶設(shè)置了CORS配置,如果請求的Access-Control-Request-Method滿足服務(wù)端的CORS配置,則在響應(yīng)中包含這條rule中的Methods。 |
|
Access-Control-Expose-Headers
|
string | 否 |
當桶設(shè)置了CORS配置,服務(wù)端CORS配置中的ExposeHeader。 |
|
x-obs-server-side-encryption
|
string | 否 |
如果服務(wù)端加密是SSE-KMS方式,響應(yīng)包含該頭域。 |
|
x-obs-server-side-encryption-kms-key-id
|
string | 否 |
如果服務(wù)端加密是SSE-KMS方式,響應(yīng)包含該頭域,該頭域表示主密鑰。 格式為: regionID:domainID(租戶ID):key/key_id 其中regionID是使用密鑰所屬region的ID;domainID是使用密鑰所屬租戶的租戶ID;key_id是本次加密使用的密鑰ID。 |
|
x-obs-server-side-encryption-customer-algorithm
|
string | 否 |
如果服務(wù)端加密是SSE-C方式,響應(yīng)包含該頭域,該頭域表示加密使用的算法。 |
|
x-obs-server-side-encryption-customer-key-MD5
|
string | 否 |
如果服務(wù)端加密是SSE-C方式,響應(yīng)包含該頭域,該頭域表示加密使用的密鑰的MD5值。 |
