OSS文件服務(wù)端簽名上傳回調(diào)

背景

1、由于文件直接通過服務(wù)器再到文件存儲(chǔ)服務(wù)會(huì)驗(yàn)證影響到服務(wù)的性能,要是存在大批量文件的行為脐嫂,可能會(huì)直接拖垮服務(wù);目前我們使用OSS文件存儲(chǔ)服務(wù)紊遵,OSS文件存儲(chǔ)支持上傳回調(diào)账千,這樣會(huì)減少服務(wù)器壓力和網(wǎng)絡(luò)帶寬;
?2暗膜、采用服務(wù)端簽名后直傳方案有個(gè)問題:大多數(shù)情況下匀奏,用戶上傳數(shù)據(jù)后,應(yīng)用服務(wù)器需要知道用戶上傳了哪些文件以及文件名学搜;如果上傳了圖片娃善,還需要知道圖片的大小等。

解決思路

使用OSS官網(wǎng)介紹方案瑞佩,利用OSS官網(wǎng)的對應(yīng)語言的操作示例聚磺,來實(shí)現(xiàn)我們需要的方案

方案介紹

詳細(xì)流程

image.png

1、流程如下:
用戶向應(yīng)用服務(wù)器請求上傳Policy和回調(diào)炬丸。
應(yīng)用服務(wù)器返回上傳Policy和回調(diào)設(shè)置瘫寝。
用戶直接向OSS發(fā)送文件上傳請求。
OSS根據(jù)用戶的回調(diào)設(shè)置稠炬,發(fā)送回調(diào)請求給應(yīng)用服務(wù)器焕阿。
應(yīng)用服務(wù)器返回響應(yīng)給OSS。
OSS將應(yīng)用服務(wù)器返回的內(nèi)容返回給用戶首启。

policy封裝(類似token的權(quán)限校驗(yàn)+需要的參數(shù))

2暮屡、內(nèi)容解析如下:

CallbackUrl:OSS往這個(gè)服務(wù)器發(fā)送的URL請求。
callbackHost:OSS發(fā)送這個(gè)請求時(shí)毅桃,請求頭部所帶的Host頭褒纲。
callbackBody:OSS請求時(shí),發(fā)送給應(yīng)用服務(wù)器的內(nèi)容钥飞,可以包括文件的名稱莺掠、大小、類型代承。如果是圖片汁蝶,可以是圖片的高度、寬度论悴。
callbackBodyType:請求發(fā)送的Content-Type掖棉。

3、客戶端/web上傳
?客戶端/web上傳圖片膀估,是根據(jù)返回的policy信息幔亥,把對應(yīng)的圖片文件上傳到服務(wù)器,上傳后會(huì)有個(gè)回調(diào)地址察纯,從服務(wù)端返回帕棉,客戶端可以根據(jù)返回內(nèi)容判斷是否上傳成功。
?在客戶端源碼upload.js文件中饼记,callbackbody的值是步驟2中應(yīng)用服務(wù)器返回給客戶端消息body中callback的內(nèi)容香伴。如下代碼是官網(wǎng)例子:

new_multipart_params = {
     'key' : key + '${filename}',
     'policy': policyBase64,
     'OSSAccessKeyId': accessid,
     'success_action_status' : '200', //讓服務(wù)端返回200,不設(shè)置則默認(rèn)返回204
     'callback':  callbackbody,
     'signature': signature,
 };

遇到的問題

1具则、由于對接的圖片加密上傳有web端即纲、JAVA口蝠、python歧胁、c++等一些服務(wù),有c++的對接的同事反應(yīng)會(huì)存在一些問題愉择,改成python進(jìn)行封裝匪凡。由于對接服務(wù)語言較多膊畴,參考OSS官網(wǎng)會(huì)沒有封裝成SDK進(jìn)行處理,會(huì)有有一些語言的操作示例病游,需要根據(jù)官網(wǎng)進(jìn)行對接唇跨。
?2、之前上傳圖片存在幾萬或者幾十萬張的級別上傳的情況下衬衬,有反饋請求反應(yīng)太慢轻绞,后面排查是客戶端進(jìn)行多線程操作,把帶寬拉滿佣耐,導(dǎo)致部分圖片上傳失敗政勃,建議對接注意該問題,防止文件丟失兼砖。

總結(jié)

參考OSS的設(shè)計(jì)奸远,避免了很多不必要的性能,還增加一些流程的閉環(huán)讽挟;在以后設(shè)計(jì)一些中間件和業(yè)務(wù)代碼的過程中可以借鑒類似方式懒叛;

參考文章:https://help.aliyun.com/document_detail/31927.html?spm=a2c4g.11186623.6.1372.11174367XkuM4R

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市耽梅,隨后出現(xiàn)的幾起案子薛窥,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诅迷,死亡現(xiàn)場離奇詭異佩番,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)罢杉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門趟畏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人滩租,你說我怎么就攤上這事赋秀。” “怎么了律想?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵猎莲,是天一觀的道長。 經(jīng)常有香客問我技即,道長著洼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任姥份,我火速辦了婚禮郭脂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘澈歉。我一直安慰自己展鸡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布埃难。 她就那樣靜靜地躺著莹弊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涡尘。 梳的紋絲不亂的頭發(fā)上忍弛,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天,我揣著相機(jī)與錄音考抄,去河邊找鬼细疚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛川梅,可吹牛的內(nèi)容都是我干的疯兼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼贫途,長吁一口氣:“原來是場噩夢啊……” “哼吧彪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起丢早,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤姨裸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體傀缩,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡那先,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扑毡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胃榕。...
    茶點(diǎn)故事閱讀 39,739評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盛险,死狀恐怖瞄摊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情苦掘,我是刑警寧澤换帜,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站鹤啡,受9級特大地震影響惯驼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜递瑰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一祟牲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抖部,春花似錦说贝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至俯萎,卻和暖如春傲宜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背夫啊。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工函卒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撇眯。 一個(gè)月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓报嵌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親叛本。 傳聞我的和親對象是個(gè)殘疾皇子沪蓬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容