寫在前面
阿里雲oss的各種sdk,都是對它的api進行的封裝。所以如果我們直接呼叫api時出錯,卻又不知道**出問題時,可以直接閱讀sdk的原始碼,找到問題所在。
首先貼一下阿里雲oss官網貼出的簽名計算方式:
authorization = "oss " + accesskeyid + ":" + signature
signature = base64(hmac-sha1(accesskeysecret,
verb + "\n"
+ content-md5 + "\n"
+ content-type + "\n"
+ date + "\n"
+ canonicalizedossheaders
+ canonicalizedresource))
通過計算方法可以看出authorization是由四部分組成:
1. 字串oss
(注意oss後面有乙個空格)
2. accesskeyid,也就是oss bucket的使用者名稱。可以在oss控制台 - 物件儲存oss - 概覽,在頁面的右側即可看到accesskey選項,點進去可以檢視。
3. 字串:
4. signature簽名,這裡再貼一下阿里雲oss官網給出的計算說明:
例子
這裡拿object的put api舉例說明:
步驟1.生成signature之前的引數
verb: "post"
content-md5: "" //如果沒有md5可以為空字串
content-type: "text/plain"
date: "tue, 26 sep 2017 07:10:15 gmt" //gmt格式時間
canonicalizedossheaders: ["x-oss-date:tue, 26 sep 2017 07:10:15 gmt","x-oss-user-agent:aliyun-sdk-js/4.10.0 chrome 60.0.3112.113 on windows 10 64-bit"]
canonicalizedresource: "/bucket/aa.txt" //bucket為你的bucket名稱
上面的canonicalizedossheaders實際上是乙個陣列,第乙個元素為x-oss-date,值與date一樣,後面的x-oss-user-agent是從oss-sdk原始碼上拔下來的,可以直**出包含了sdk、瀏覽器版本、系統版本等資訊。
2.將前面的引數拼接成乙個字串
從signature的規則中,每個引數後面都要加乙個換行符,從而組成乙個字串。我們先將以上引數放在乙個陣列中。(canonicalizedossheaders有兩項則在陣列中有兩個元素,這裡需要注意)
0
"put"1""
2"text/plain"
3"tue, 26 sep 2017 07:10:15 gmt"
4"x-oss-date:tue, 26 sep 2017 07:10:15 gmt"
5"x-oss-user-agent:aliyun-sdk-js/4.10.0 chrome 60.0.3112.113 on windows 10 64-bit"
6"/chengyanzhao/aa.txt"
然後使用array的join(『\n』)方法合併成乙個字串
"put
text/plain
tue, 26 sep 2017
07:10:15 gmt
x-oss-date:tue, 26 sep 2017
07:10:15 gmt
x-oss-user-agent:aliyun-sdk-js/4.10.0 chrome 60.0.3112.113 on windows 10
64-bit
/chengyanzhao/aa.txt"
這樣authorization = 「oss 」 + accesskeyid + 「:」 + signature中的計算引數我們就有了,套入base64和hmac-sha1計算方式即可得出authorization。
3.傳送請求
另外這裡有乙個demo,是在阿里雲論壇上找到的,為了方便學習我在網盤中分享,密碼:9d54。
上傳時設定
上傳後設定
這裡使用js-oss-sdk來說明。
1.上傳時設定
阿里oss提供了多種上傳方式,但每種上傳方法都接受乙個options引數,這個引數即可設定檔案的元資料。
headers:
2.上傳後設定// key為oss中檔案的key,也就是在oss控制台中現實的檔名。
client.copy(key, key,
})
阿里雲OSS 上傳檔案
阿里雲後台管理 api 整合教程 key 網域名稱的查詢 1 檢視上傳的檔案在哪?a 阿里雲,進入官網。然後進入管理控制台 b 左側選單欄,進入物件儲存 oss c 進入 bucket 管理頁面,點選建立的bucket 名稱 d 進入bucket 管理介面,點選左側選單 bucket屬性 選單檢視b...
阿里雲OSS上傳
這種方式相當於自動上傳,可以參考antd官網的給的例子 首先,後端會提供乙個介面,會返回一些上傳到oss需要的類似配置引數 下面的是我們後端同學給返回的引數 1 accessid,對應ossaccesskeyd 2 policy 3 signature 4 host,oss的上傳位址 下面是請求上傳...
阿里雲oss 大檔案上傳
最近公司在做工程專案,實現檔案雲儲存上傳 網上找了很久,發現很多專案都存在一些問題,但還是讓我找到了乙個成熟的專案。工程 對專案的檔案雲儲存上傳功能做出分析,找出檔案上傳的原理,對檔案的雲儲存模式深入了解。執行 檔案存放根目錄 h 這裡使用的雲儲存服務功能,所以需要在雲儲存裡面觀察檔案的大小結構 檔...