校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 七牛云存儲使用中一些常見問題的解決經驗

七牛云存儲使用中一些常見問題的解決經驗

熱門標簽:搜地圖標注怎么找店鋪 勝威電話外呼系統密碼 個人家庭地圖標注教程 七臺河商家地圖標注注冊 威海語音外呼系統廠家 廣安電銷外呼系統 百度地圖標注不能編輯 徐州穩定外呼系統代理商 百度高德騰訊地圖標注公司

599錯誤處理
如果在與七牛的交互中出現http狀態碼為599的錯誤,一句話,不要猶豫,直接聯系七牛技術支持。七牛的文檔也在很多地方提到這個錯誤,都是指導大家去聯系技術支持的。筆者是在分塊上傳后的mkfile調用時出現的,聯系技術支持后,說是調整了一下,讓我重試。后來就好了…

分塊上傳無法從回調中獲得文件的原始名
簡單上傳采用的是multipart/form-data方式上傳,七牛服務端能夠從請求中獲得文件的原始名,并支持使用魔法變量$(fname)回調業務服務器。不過當使用分片上傳的時候情況有所不同。分片上傳需要在最后調用mkfile,來將分片拼接起來。但是,mkfile接口支持普通的請求,并沒有附帶文件名,所以七牛也就無法獲得文件名,此時從$(fname)中是取不到文件名的。這個問題我也向七牛技術支持提交了問題,得到的結果是使用自定義變量mkfile支持將自定義變量放在url中,回調的時候自定義變量可以傳遞給業務服務器。

慎用圖片預處理
七牛云支持很多對文件的預處理,其中最常用的應該就是圖片預處理了,可以對圖片的大小做變換等。七牛推薦使用GET的方式直接指定圖片處理結果的url,像這樣:

http://qiniuphotos.qiniudn.com/gogopher.jpg?imageView2/1/w/200/h/200
處理后的圖片會自動緩存,用戶不用關心,只要每次訪問都用這個url就行了。然而,筆者在開始的時候,為了保持與其他文件形式統一的處理方法,對圖片使用了預處理(因為視頻什么的只能預處理),即在token中指定了預處理。此時問題出現了,從后臺的日志看到,圖片的預處理通知回調竟然比正常的上傳成功回調還要快!這就導致預處理結果到來之前,我的業務服務器的數據庫中還沒有這個圖片,無法保存預處理結果了。所以推薦還是使用url直接處理,對圖片要慎用預處理

視頻文件無法快進播放
通常用戶在觀看視頻的時候都會根據自己的喜好,快速將視頻定位到指定的時間播放。實現這個功能,需要視頻本身有關鍵幀信息、服務端需要支持關鍵幀播放請求。

但是筆者發現,在使用七牛云轉化后的視頻,這樣做是無效的。于是咨詢技術支持,得到的答案是:轉化的文件是具有關鍵幀的,但七牛使用CDN加速,所以關鍵幀請求需要CDN的支持,如果想要用這個功能的話,需要單獨聯系銷售或技術支持在CDN上配置,而且時間比較長。筆者聯系了銷售和技術支持,說是幫我配置,但到現在還沒有搞定,因為最近這個也不是特別重要,所以也沒有跟下去。

Callback校驗
這是可選的一個步驟。由于七牛云會在上傳完成之后回調業務服務器,所以理論上說業務服務器需要校驗這個回調的合理性。原理在七牛的文檔中有,需要用到HMAC-SHA1簽名函數。但是七牛的sdk中沒有提供直接的方式來做校驗,在研讀文檔、多次失敗和查看sdk源碼后,筆者終于校驗成功了。關鍵的分歧在于,文檔中的這句話:

獲取明文:data = Request.URL.Path +”\n” +Request.Body
這里的Request.URL.Path是否包含Querystring?答案是包含的!下面是筆者C#服務端的校驗代碼,使用的是ASP.NET Web Api:

C# Code復制內容到剪貼板
  1. byte[] key = System.Text.Encoding.UTF8.GetBytes(Qiniu.Conf.Config.SECRET_KEY);   
  2. using (HMACSHA1 hmac = new HMACSHA1(key))   
  3. {   
  4.     var t = filterContext.Request.Content.ReadAsStringAsync();   
  5.     t.Wait();   
  6.     string rawbody = t.Result;   
  7.     log.DebugFormat("request's rawbody : {0}", rawbody);   
  8.     string text = filterContext.Request.RequestUri.PathAndQuery + "\n" + rawbody;   
  9.     log.DebugFormat("PathAndQuery + \\n + rawbody : {0}", text);   
  10.     byte[] digest = hmac.ComputeHash(System.Text.Encoding.UTF8.GetBytes(text));   
  11.     string computed = Qiniu.Util.Base64URLSafe.Encode(digest);   
  12.     log.DebugFormat("Computed hash after base64 : {0}", computed);   
  13.   
  14.     IEnumerablestring> auths;   
  15.     if (filterContext.Request.Headers.TryGetValues("Authorization"out auths)  auths.Count() == 1)   
  16.     {   
  17.         string auth = auths.First();   
  18.         log.DebugFormat("Authorization in header : {0}", auth);   
  19.         if (auth.StartsWith("QBox "))   
  20.         {   
  21.             var arr = auth.Substring(5).Split(':');  
  22.             if (arr.Length == 2)  
  23.             {  
  24.                 if (arr[1] != computed)  
  25.                 {  
  26.                     log.ErrorFormat("Authorization failed. Since auth from header {0} not equals computed {1}", arr[1], computed);  
  27.                 }  
  28.                 else  
  29.                 {  
  30.                     log.Debug("Authorization success.");  
  31.                     //only pass can be return  
  32.                     return;  
  33.                 }  
  34.             }  
  35.             else  
  36.             {  
  37.                 log.Error("Callback Authorization's format is invalid, can not find two part after split by ':'.");   
  38.             }   
  39.         }   
  40.         else  
  41.         {   
  42.             log.Error("Callback Authorization's format is invalid, missing leading 'QBox '.");   
  43.         }   
  44.     }   
  45.     else  
  46.     {   
  47.         log.Error("The request from qiniu callback is missing 'Authorization'");   
  48.     }   
  49.   
  50.     filterContext.Response = filterContext.Request.CreateResponse(System.Net.HttpStatusCode.Forbidden);   
  51.   
  52. }  

如下幾個注意點:

明文應當是請求的path+querystring部分和rawbody
對于.NET而言,明文和key都需要用UTF-8編碼變換成字節才能進行簽名。而php中的hash_hmac函數完全不用這么復雜…
簽名的結果再用base64的url安全的方式編碼,再與請求的http頭部的Authorization比較
建議官方在文檔中加入一些相對底層一些的編程語言的實現,php太高端了…

js-sdk實現略顯粗糙
在使用過程中,我發現官方的js-sdk有幾個我覺得不好的地方:

不能為每個文件獲取UpToken

試想,在文件上傳過程中有獲取UpToken是必須的,而且UpToken又需要包含預處理指令,不同的文件顯然需要不同的UpToken,而在js-sdk的實現中,只在初始化這個上傳組件對象的時候請求一次上傳憑證,后面所有的上傳都需要使用這個預先得到的UpToken:

JavaScript Code復制內容到剪貼板
  1. uploader.bind('Init'function(up, params) {      
  2.     getUpToken();      
  3. });     
于是我修改了這部分,在BeforeUpload事件中請求UpToken。建議官方考慮更改這個地方

只能實現分片上傳,無法斷點續傳

js-sdk的實現在分片上傳的實現上,是很簡單的,不僅沒有使用分片,而是分塊(一塊4m,調用mkblk),而且沒有實現持久化ctx,或者類似的回調或接口。4m分塊這個問題還可以不追究,沒有實現持久化ctx就說不過去了,不持久化怎么實現斷點續傳撒?!就算不實現,也應該給出回調的入口,讓調用者來實現持久化,而我實在無法找到這個’空子’可鉆,只能直接在源碼上改動了。

沒有復用流行類庫的東西

這個其實算不上問題,因為作為一個不依賴jquery的sdk,當然不能使用jquery現成的東西,比如ajax。不依賴jquery就算了,依賴plupload是幾個意思嘛,還依賴全局對象…于是最后,我干脆自己將sdk改成了Backbone的類,將不要的東西統統去掉,使用jquery和underscore簡化代碼了…

標簽:昭通 三明 云浮 臨沂 威海 滁州 婁底 吳忠

巨人網絡通訊聲明:本文標題《七牛云存儲使用中一些常見問題的解決經驗》,本文關鍵詞  七牛,云,存儲,使用,中,一些,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《七牛云存儲使用中一些常見問題的解決經驗》相關的同類信息!
  • 本頁收集關于七牛云存儲使用中一些常見問題的解決經驗的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美一区三区四区| 国产三区在线成人av| 欧美tickling挠脚心丨vk| 欧美激情一区二区三区在线| 午夜欧美在线一二页| 成人性生交大片免费看在线播放| 欧美日韩夫妻久久| 中文字幕日本不卡| 国产一区二区三区日韩 | 粉嫩一区二区三区在线看| 欧美亚洲一区三区| 欧美国产一区二区| 捆绑调教美女网站视频一区| 91免费在线看| 欧美日韩高清一区二区不卡| 国产精品国产三级国产普通话蜜臀 | 在线播放欧美女士性生活| 国产精品国产自产拍高清av| 久久精品99久久久| 欧美精品第一页| 一区二区三区.www| 色香蕉成人二区免费| 欧美激情一区在线| 成人午夜在线播放| 国产色一区二区| 国产激情一区二区三区四区| 精品精品国产高清a毛片牛牛 | 美女尤物国产一区| 91高清视频在线| 国产精品久久久久久久久搜平片 | 日韩在线卡一卡二| 91国偷自产一区二区使用方法| 国产精品久久久久影院亚瑟| 理论电影国产精品| 欧美电影免费观看高清完整版在| 一区二区三区在线视频免费观看 | 色综合久久天天| 国产精品剧情在线亚洲| 成人黄色在线网站| 成人欧美一区二区三区小说 | 国产精品91xxx| 中文字幕欧美日本乱码一线二线| 国产成人亚洲综合a∨婷婷图片| 久久丝袜美腿综合| 国产成人综合网站| 国产精品久久久久久久久久免费看| 成人精品高清在线| 最新不卡av在线| 日本道精品一区二区三区| 亚洲一区在线视频观看| 欧美日韩免费电影| 老司机一区二区| 国产欧美一二三区| 色综合久久综合| 天堂在线一区二区| 精品国产一区二区在线观看| 国产美女一区二区三区| 亚洲欧美怡红院| 欧美色网一区二区| 一区二区三区在线视频观看| 欧美午夜精品免费| 丝袜诱惑亚洲看片| 久久久久久久久岛国免费| 国产91精品露脸国语对白| 一区二区三区久久久| 欧美日韩电影在线| 国产精品一区二区你懂的| 自拍偷拍国产精品| 91精品中文字幕一区二区三区| 狠狠色丁香久久婷婷综合丁香| 国产精品你懂的在线欣赏| 日本丰满少妇一区二区三区| 日欧美一区二区| 国产欧美日韩不卡免费| 一本久久a久久精品亚洲| 日韩成人免费电影| 国产精品久久久久久妇女6080| 91看片淫黄大片一级在线观看| 午夜精品一区二区三区免费视频| 久久精品这里都是精品| 欧美日韩一区国产| 粉嫩av一区二区三区| 天天av天天翘天天综合网色鬼国产| 久久精品欧美一区二区三区不卡| 91视频精品在这里| 国模套图日韩精品一区二区| 国产精品丝袜一区| 欧美日韩免费视频| 成人精品免费视频| 日本中文字幕一区| 国产精品超碰97尤物18| 日韩一二三区不卡| 欧美日韩精品系列| 91丨porny丨蝌蚪视频| 国内久久精品视频| 日韩 欧美一区二区三区| 亚洲同性gay激情无套| 欧美三电影在线| 99久久综合狠狠综合久久| 国产乱妇无码大片在线观看| 亚洲超丰满肉感bbw| 丝袜诱惑制服诱惑色一区在线观看| 日韩欧美在线不卡| 91久久精品网| 国产美女娇喘av呻吟久久| 亚洲电影你懂得| 国产精品乱人伦中文| 欧美精品一区二区在线播放| 一本色道久久综合亚洲aⅴ蜜桃 | 91麻豆精品国产| 在线一区二区三区| 色综合中文综合网| 欧美亚洲国产一区在线观看网站| 国产精选一区二区三区| 视频一区欧美日韩| 亚洲影院免费观看| 国产清纯白嫩初高生在线观看91| 精品久久一二三区| 日韩欧美aaaaaa| 日韩一级二级三级精品视频| 欧美午夜片在线看| 欧美色精品在线视频| 91国产成人在线| 97se狠狠狠综合亚洲狠狠| 国产成人精品免费看| 成人一区在线观看| 国产原创一区二区| 国产高清亚洲一区| 成人午夜精品在线| 97se狠狠狠综合亚洲狠狠| 99久久免费视频.com| a级高清视频欧美日韩| 国产 欧美在线| 粉嫩蜜臀av国产精品网站| 成人动漫一区二区| 一本到不卡精品视频在线观看| 不卡在线观看av| 91美女视频网站| 欧美日韩视频在线第一区| 欧美福利视频一区| 26uuu国产日韩综合| 国产女主播在线一区二区| 中文字幕一区日韩精品欧美| 中文字幕高清不卡| 国产精品免费视频网站| 一区二区三区av电影| 免费在线看成人av| 国产成人啪免费观看软件| 99久久免费视频.com| 欧美日高清视频| 久久久夜色精品亚洲| 亚洲视频每日更新| 日本麻豆一区二区三区视频| 久久电影网电视剧免费观看| 国产成人av影院| 欧美吞精做爰啪啪高潮| 91精品国产色综合久久不卡蜜臀| 久久久久久久精| 亚洲精品高清在线观看| 蜜臀久久久久久久| 国产91精品在线观看| 欧美日韩精品欧美日韩精品一| 欧美日韩国产小视频| 精品少妇一区二区三区免费观看| 国产精品久久久久久久岛一牛影视| 亚洲第一激情av| 成人免费黄色大片| 337p亚洲精品色噜噜狠狠| 中文子幕无线码一区tr| 天堂va蜜桃一区二区三区 | 中文在线一区二区| 天堂av在线一区| 波多野结衣在线一区| 欧美一个色资源| 亚洲激情自拍视频| 国产精品99久久久| 欧美精品高清视频| 亚洲欧美电影院| 国产精品资源在线看| 欧美久久婷婷综合色| 综合色天天鬼久久鬼色| 国产主播一区二区三区| 91精品国产综合久久精品图片| 亚洲男人的天堂在线aⅴ视频| 免费在线观看精品| 在线精品视频一区二区三四| 欧美日韩在线播放三区四区| 亚洲三级在线免费观看| 高清成人在线观看| 26uuu久久天堂性欧美| 日韩精品一区第一页| 欧洲精品在线观看| 亚洲免费在线播放| 成人高清av在线| 日韩欧美国产精品| 免费成人在线网站| 欧美日韩视频在线观看一区二区三区 | 成人动漫av在线| 欧美日韩视频在线第一区| 亚洲欧美激情小说另类|