362
英雄聯盟
PutObject__關於Object操作_API 參考_對象存儲 OSS-阿裏雲
Put Object用於上傳文件。
請求語法
PUT /ObjectName HTTP/1.1
Content-Length:ContentLength
Content-Type: ContentType
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
請求Header
名稱 | 描述 |
---|---|
Cache-Control | 指定該Object被下載時的網頁的緩存行為;更詳細描述請參照RFC2616。 類型:字符串 默認值:無 |
Content-Disposition | 指定該Object被下載時的名稱;更詳細描述請參照RFC2616。 類型:字符串 默認值:無 |
Content-Encoding | 指定該Object被下載時的內容編碼格式;更詳細描述請參照RFC2616。 類型:字符串 默認值:無 |
Content-MD5 | 根據協議RFC 1864對消息內容(不包括頭部)計算MD5值獲得128比特位數字,對該數字進行base64編碼為一個消息的Content-MD5值。該請求頭可用於消息合法性的檢查(消息內容是否與發送時一致)。雖然該請求頭是可選項,OSS建議用戶使用該請求頭進行端到端檢查。 類型:字符串 默認值:無 限製:無 |
Expires | 過期時間;更詳細描述請參照RFC2616。 類型:字符串 默認值:無 注意:OSS不會對這個值進行限製和驗證 |
x-oss-server-side-encryption | 指定oss創建object時的服務器端加密編碼算法。 類型:字符串 合法值:AES256 |
x-oss-object-acl | 指定oss創建object時的訪問權限。 類型:字符串 合法值:public-read,private,public-read-write |
細節分析
- 如果用戶上傳了Content-MD5請求頭,OSS會計算body的Content-MD5並檢查一致性,如果不一致,將返回InvalidDigest錯誤碼。
- 如果請求頭中的“Content-Length”值小於實際請求體(body)中傳輸的數據長度,OSS仍將成功創建文件;但Object大小隻等於“Content-Length”中定義的大小,其他數據將被丟棄。
- 如果試圖添加的Object的同名文件已經存在,並且有訪問權限。新添加的文件將覆蓋原來的文件,成功返回200 OK。
- 如果在PutObject的時候,攜帶以x-oss-meta-為前綴的參數,則視為user meta,比如x-oss-meta-location。一個Object可以有多個類似的參數,但所有的user meta總大小不能超過8k。
- 如果Head中沒有加入Content length參數,會返回411 Length Required錯誤。錯誤碼:MissingContentLength。
- 如果設定了長度,但是沒有發送消息Body,或者發送的body大小小於給定大小,服務器會一直等待,直到time out,返回400 Bad Request消息。錯誤碼:RequestTimeout。
- 如果試圖添加的Object所在的Bucket不存在,返回404 Not Found錯誤。錯誤碼:NoSuchBucket。
- 如果試圖添加的Object所在的Bucket沒有訪問權限,返回403 Forbidden錯誤。錯誤碼:AccessDenied。
- 如果添加文件長度超過5G,返回錯誤消息400 Bad Request。錯誤碼:InvalidArgument。
- 如果傳入的Object key長度大於1023字節,返回400 Bad Request。錯誤碼:InvalidObjectName。
- PUT一個Object的時候,OSS支持5個 HTTP RFC2616協議規定的Header 字段:Cache-Control、Expires、Content-Encoding、Content-Disposition、Content-Type。如果上傳Object時設置了這些Header,則這個Object被下載時,相應的Header值會被自動設置成上傳時的值。
- 如果上傳Object時指定了x-oss-server-side-encryption Header,則必須設置其值為AES256,否則會返回400和相應錯誤提示:InvalidEncryptionAlgorithmError。指定該Header後,在響應頭中也會返回該Header,OSS會對上傳的Object進行加密編碼存儲,當這個Object被下載時,響應頭中會包含x-oss-server-side-encryption,值被設置成該Object的加密算法。
常見問題
Content-MD5計算方式錯誤
以上傳的內容為"123456789"來說,計算這個字符串的Content-MD5
正確的計算方式:
標準中定義的算法簡單點說就是:
1. 先計算MD5加密的二進製數組(128位)。
2. 再對這個二進製進行base64編碼(而不是對32位字符串編碼)。
以Python為例子:
正確計算的代碼為:
>>> import base64,hashlib
>>> hash = hashlib.md5()
>>> hash.update("0123456789")
>>> base64.b64encode(hash.digest())
'eB5eJF1ptWaXm4bijSPyxw=='
需要注意
正確的是:hash.digest(),計算出進製數組(128位)
>>> hash.digest()
'xx1e^$]ixb5fx97x9bx86xe2x8d#xf2xc7'
常見錯誤是直接對計算出的32位字符串編碼進行base64編碼。
例如,錯誤的是:hash.hexdigest(),計算得到可見的32位字符串編碼
>>> hash.hexdigest()
'781e5e245d69b566979b86e28d23f2c7'
錯誤的MD5值進行base64編碼後的結果:
>>> base64.b64encode(hash.hexdigest())
'NzgxZTVlMjQ1ZDY5YjU2Njk3OWI4NmUyOGQyM2YyYzc='
示例
請求示例:
PUT /oss.jpg HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Cache-control: no-cache
Expires: Fri, 28 Feb 2012 05:38:42 GMT
Content-Encoding: utf-8
Content-Disposition: attachment;filename=oss_download.jpg
Date: Fri, 24 Feb 2012 06:03:28 GMT
Content-Type: image/jpg
Content-Length: 344606
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:kZoYNv66bsmc10+dcGKw5x2PRrk=
[344606 bytes of object data]
返回示例:
HTTP/1.1 200 OK
Server: AliyunOSS
Date: Sat, 21 Nov 2015 18:52:34 GMT
Content-Length: 0
Connection: keep-alive
x-oss-request-id: 5650BD72207FB30443962F9A
x-oss-bucket-version: 1418321259
ETag: "A797938C31D59EDD08D86188F6D5B872"
最後更新:2016-11-23 17:16:08
上一篇:
DeleteBucketLifecycle__關於Bucket的操作_API 參考_對象存儲 OSS-阿裏雲
下一篇:
CopyObject__關於Object操作_API 參考_對象存儲 OSS-阿裏雲
在哪裏可以查到ECS的權限定義___雲服務器(ECS)授權問題_授權常見問題_訪問控製-阿裏雲
應用操作__JavaSDK手冊_SDK參考手冊_開放搜索-阿裏雲
CDN加速導致CORS配置失效__運維技術分享_技術運維問題_CDN-阿裏雲
數值類型__數據類型_SQL語法參考_雲數據庫 OceanBase-阿裏雲
ReservedThroughput__DataType_API 參考_表格存儲-阿裏雲
全係Skylake 阿裏雲華北5地十月開服
Fluentd MaxCompute插件__數據入雲_數據集成-阿裏雲
查看SQL日誌運行報告__性能優化_API 參考_雲數據庫 RDS 版-阿裏雲
服務端簽名直傳並設置上傳回調__Web端直傳實踐_最佳實踐_對象存儲 OSS-阿裏雲
AppendObject__關於Object操作_API 參考_對象存儲 OSS-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲