七牛雲存儲客戶端
⑴ 七牛雲存儲怎麼布署到伺服器
"在網路覆蓋的范圍內手機、平板、電腦可以隨時的實現文件同步
"部門之間可以安全的文件分享
"所有人對文件的操作行為均可以被記錄
"登錄身份認證機制與企業現有管理機制相結合
"存放於數據中心的文件具備高強度的加密
正是從這種需求出發,推動了廠商對企業私有雲存儲的技術研發,目前市場上已經有部分成熟的產品方案得到應用,筆者剛剛拿到VEsystem 推出的VECloud 2.0最新版,目前正在測試中;在此謹以VECloud 2.0(和信雲存儲)為例,向大家講解企業私有雲存儲的快捷部署方法,供企業信息管理人員在方案選擇時參考所有。
抽象來看與網路雲網盤一樣,部署好的私有雲存儲是一個可以通過瀏覽器輸入網址或IP地址直接訪問的網站。那麼除伺服器基礎平台的建設之後,我們需要就是搭建一套Web Server 的發布平台,最常見的WEB發布平台應該是IIS(微軟伺服器版系統中自身提供) 、以及Apache ,根據不同網站開發語言的需要還需要配置腳本解釋與資料庫支持;比如大家經常提到的ASP + msSQL 、php + mySQL 等;
2
VECloud 2.0 對WEB平台要求是:PHP 5.10 / mySQL 5.5
以往在Windows平台手工搭建AMP環境(Apache MySQL PHP)是比較復雜的,幸好現在已經有相應的一鍵式集成包,可以幫助我們快速完成這項工作。筆者比較習慣使用的是EasyPHP,本次部署所採用的版本是12.0 ;EasyPHP 安裝非常簡單幾乎你只用點下一步即可以完成(對AMP 環境的搭建比較熟的朋友可以越過章節)。
安裝結束後會自動打開默認瀏覽器呈現當前AMP配置運行信息,如上圖我們可以看到APACHE 2.42 / MYSQL 5.5.2 / PHP 5.4.4 即已經有運行中,有關EasyPHP 12.0 的詳細調試使用可以參考官方教程或相關文章,作為服務運行的支撐平台,其不屬於雲存儲的技術討論范圍後面的章節中不再重復提及。
接下來我將VECloud2.0 的WEB站點的發布包,解壓到WWW 目錄中,然後通過瀏覽器訪問本機IP 如127.0.0.1??即可以打開這個站點;站點首次被打開時會有一個安裝向導完成初始的部署工作。如下圖:
點擊"現在就開始"…
接下來的頁面中會顯示出當前WEB伺服器的環境配置信息,以及和信雲存儲對環境基本要求自檢結果,為了保障功能的全面正常執行,建議按照提示信息的要求,調整伺服器的配置信息以達到推薦標准,如下圖:
在默認情況下 PHP 擴展中的PHP_EXIF 、PHP_GETTEXT 、PHP_LDAP 、PHP_OPENSSL 並未消開啟,最大文件限制默認為2M ,這里會建議我們開啟上述擴展並調大文件限制。
這都可以通過修改PHP.INI 配置文件來實現,PHP.INI 文件默認存放在apache 目錄中,可以用記事本打開
可以通過查找方式找到PHP_EXIF 、PHP_GETTEXT 、PHP_LDAP 、PHP_OPENSSL 這幾項PHPExt 所在位置,注意行前一個" ; "(分號),分號表示此行被注釋,只需要將分號去掉即可,(如上圖)如果是手工搭建的AMP 環境需要確定對應DLL 文件已經安裝注冊。
同時找到upload_max_filesize = 項,將最大上傳文件的大小設定到一個合適的值。如上圖
重新啟動Apache 服務,刷新頁面後我們可以看到自檢測結果已經發生變化,目前我們WEB服務端的配置已經完全符合推薦要求。
點擊"下一步"繼續…
接下來的配置是關於MYSQL資料庫的參數,我們需要創建一個資料庫管理員以及對應的資料庫、表名前綴;
可以通過PHPMYADMIN(MYSQL的在線管理工具,如果是通過EASYPHP安裝則已經自帶)來方便的創建用戶並同時創建與用戶名同名的資料庫;如下圖:
添加 [ 用戶 ] / [ 添加用戶 ], 輸入用戶名VECLOUD 、主機:127.0.0.1(如無分布部署或有額外的名稱解析,應採用本機IP), 勾選"創建與用戶同名的資料庫並授予所有許可權"
通過上述操作我們就為雲存儲服務端創建了專用的資料庫管理用戶及同名的資料庫。
返回到雲存儲的安裝界面,注意最後一項是關於"文件存儲路徑"的設置,在此處可以設定一個目標路徑,當雲存儲服務上線之後,用戶上傳分享的文件都將保存在這個路徑之下,因為目標路徑建議採用專業存儲陣列或設備,確保並發速度與數據安全。
接下來的頁面中可對雲存儲的管理用戶與密碼進行設置,提示:管理員將可以在後台管理所有用戶的信息以及系統的相關參數設置,一定要管理好該用戶並設置高強度的密碼,防止被猜測破解後登錄。
點擊"下一步"繼續
至此,"和信雲存儲"的安裝已經完成,可以試一下在瀏覽器中再次打開127.0.0.1 訪問
這一次打開的不再是安裝向導,一個真正架設在內網中的私有雲存儲用戶登錄界面呈現在眼前,VECloud 同時提供了Windows / Android / IPhone 、IPAD 的客戶端,對此私有雲存儲的訪問方式不限於網頁登錄,也可以隨時用移動設備登錄分享、同步自己的文件。
天互數據 為您解答,希望能幫到你
⑵ 初次使用七牛雲存儲,請問這是什麼問題
使用七牛雲存儲解決ios7.1的app部署問題
一.問題描述
開發完ios版本的app。需要將.ipa文件和.plist文件打包上傳,供用戶下載,在線安裝。用戶安裝過程簡單描述如下:
首先通過手機瀏覽器safari或者掃描二維碼獲取到下載.plist的地址。然後瀏覽器會自動跳轉到這個地址,下載、讀取.plist。(用戶跳轉的地址是.plist的下載地址。)這個過程,顯然使用http協議來下載.plist文件。最後,iphone通過讀取.plist文件中配置的.ipa下載地址,來安裝.ipa文件,來完成ios版本的app。
舉例,網站首頁中,下載.plist的代碼:
<ahref="itms-services://?action=download-manifest&url=http://www.ekwing.com/ekwing.plist"class="mobile-ios"></a>
但是,蘋果從ios7.1開始,用戶安裝app,需要使用https協議,來下載plist文件。也就說,在安裝app的第一步,下載.plist文件,需要使用https協議。https協議如下:
這里不詳細描述https協議。HTTPS的信任繼承基於預先安裝在瀏覽器中的證書頒發機構(如VeriSign、Microsoft等)(意即「我信任證書頒發機構告訴我應該信任的」)。因此,一個到某網站的HTTPS連接可被信任,當且僅當:
1. 用戶相信他們的瀏覽器正確實現了HTTPS且安裝了正確的證書頒發機構;
2. 用戶相信證書頒發機構僅信任合法的網站;
3. 被訪問的網站提供了一個有效的證書,意即,它是由一個被信任的證書頒發機構簽發的(大部分瀏覽器會對無效的證書發出警告);
4. 該證書正確地驗證了被訪問的網站(如,訪問https://example時收到了給「Example Inc.」而不是其它組織的證書);
5. 或者互聯網上相關的節點是值得信任的,或者用戶相信本協議的加密層(TLS或SSL)不能被竊聽者破壞。
簡單描述,用戶使用https來下載.plist文件。則需要網站支持https協議。支持https協議,除了服務端做一些配置外,還需要申請一個數據簽名證書。這個簽名證書是由簽發機構簽發的。不能自己配置生成。而申請簽名證書需要一段時間。而我們的目的只是希望能夠讓我們的app被用戶正常下載安裝即可。
二.問題分析
解決該問題,就2個方法:
1.自己網站服務上配置https服務,並購買數字簽名證書以保證每種類型及其不同版本的瀏覽器能夠安裝了證書頒發機構頒發的,我們購買的數據簽名證書。時間開銷7天左右。
2.將app文件託管到支持https協議的第三方伺服器上。
三.解決問題
使用七牛雲存儲,可以快速,免費解決這個問題。只需要到http://www.qiniu.com/注冊一個賬號。然後,開通https協議的域名即可。最後將.plist和.ipa文件上傳到七牛雲存儲上即可。操作過程,非常簡單。只要注意幾點:
1. 開通一個http協議的域名,和一個https協議的域名。
如上圖。後綴名是.qiniudn.com的是支持http協議的域名。後綴名是.qbox.me的是支持https協議的域名。上傳.plist、.ipa到七牛雲存儲。
2. 修改下載.plist文件的地址,修改.plist文件內容。
網站首頁,下載.plist地址改成上傳到七牛雲存儲上的支持https協議(域名後綴名是.qbox.me)的下載鏈接地址。
<ahref="itms-services://?action=download-manifest&url=https://dn-ekwing.qbox.me/ekwing.plist"class="mobile-ios"></a>
3. 將.plist文件內容中,.ipa的下載地址,改成七牛雲存儲上的支持http協議(後綴名是.qiniudn.com)
<string>http://ekwing.qiniudn.com/ekwing.ipa</string>
4. 總結,.plist的下載用https協議,而.ipa的下載用http協議即可。修改完後,就可應用ios6、ios7、ios7.1進行測試了。
四. 感謝七牛雲存儲
感謝七牛運存儲提供免費服務。不過,目前防盜鏈還不能用。希望能夠加上防盜鏈功能。
五. 因ios7.1安裝app,需要用https協議而提示的錯誤
無法安裝應用程序因為證書無效
<Warning>:[ERROR]: Cannot load non-https manifest URL:http://192.168.1.22/ekwing.plist
<Warning>:Could not load download manifest with underlying error: ErrorDomain=SSErrorDomain Code=128 "無法連接" UserInfo=0x1669d990 {NSLocalizedDescription=無法連接}
<Warning>: NSURLConnection/CFURLConnection HTTP loadfailed (kCFStreamErrorDomainSSL, -9813)
<Warning>: Could not load download manifest withunderlying error: Error Domain=NSURLErrorDomain Code=-1202 "無法連接到商店" UserInfo=0x166bc640{NSLocalizedDescription=無法連接到商店,NSLocalizedRecoverySuggestion=您仍要連接此伺服器嗎?,NSLocalizedFailureReason=無法建立安全連接。請檢查「日期與時間」設置。,NSErrorFailingURLStringKey=https://192.168.1.22/ekwing.plist,NSUnderlyingError=0x165b37e0 "此伺服器的證書無效。您可能正在連接到一個偽裝成「192.168.1.22」的伺服器,這會威脅到您的機密信息的安全。",=<SecTrustRef:0x166b83e0>,NSErrorFailingURLKey=https://192.168.1.22/ekwing.plist}
⑶ 七牛雲存儲的關於七牛
七牛,是一家雲存儲初創企業,由國內存儲行業的領軍人物之一許式偉於2011年創立。團隊核心成員主要來自盛大、金山、網龍、惠普等知名互聯網公司,核心成員之間已合作多年。
七牛採用全分布式存儲架構,可以解決單一數據中心架構可能存在的風險。和傳統的雲存儲服務不同,七牛還增加了上傳下載全網加速以及圖片、音視頻的處理服務。
七牛雲存儲主要託管企業的靜態資源,為企業提供一站式在線數據託管、上傳下載全網加速、以及數據雲端處理服務。主要做靜態文件,包括富媒體一體化解決方案,解決富媒體存儲、上傳下載加速、數據處理,包括圖片處理、音視頻處理,比如說做縮略圖,打水印。
此外,七牛還提供了鏡像存儲、客戶端直傳以及斷點續上傳等功能,方便開發者的使用。
⑷ 如何在WordPress中使用七牛雲存儲
七牛雲存儲可以方便的將網站的圖片等數據鏡像到七牛雲存儲的空間,直接從雲端將數據返回給用戶。這樣可以大大節省網站的空間,提升網站的訪問速度。真正顯示一鍵實現WordPress博客靜態文件CDN加速。下面主要介紹一下WordPress中七牛雲存儲插件的使用。
工具/原料
WordPress中七牛雲存儲的插件
方法/步驟
首先需要申請七牛雲存儲的賬號,申請好後,點擊創建空間,選擇空間類型為公開空間,提交。
配置空間,點擊一鍵加速網站。鏡像源填寫自己網站域名。確認加速。
接下來在WordPress後台選擇添加我愛水煮魚的「WPJAM 七牛鏡像存儲」插件並啟用。進入插件的基本設置頁面。
七牛綁定的域名:就是我們上面獲取的:。
*注意:如果博客安裝的是在子目錄下,比如
,這里
也需要帶上子目錄
/blog。比如:/blog
七牛空間名:設置為我們一開始設置的wptest
ACCESS
KEY 和SCRET
KEY:可以在七牛後台>賬戶設置>密鑰頁面獲取。
其他設置默認即可。
⑸ 七牛FOP有什麼優勢
七牛FOP 就是七牛的數據處理,例如在一個查看圖片的場景中,七牛雲客戶端可以上傳一張高精度的圖片,然後在查看圖片的時候根據屏幕規格生成一張大小適宜的縮略圖,例如為 iPhone生成一張 960x640 大小的縮略圖。這樣既可以明顯降低網路流量,而且可以提高圖片顯示速度,還能降低移動設備的內存佔用,同時還具備著三個優點,可以就近無縫對接對象存儲服務,數據存儲在哪裡就在哪裡計算的原則,無需任何復雜的配置就可以馬上使用七牛提供的數據處理單元;可以處理單元微服務化以及管道機制的引入,大 大增加了業務實現的自由度;可以實時任務與非同步任務結合,讓用戶的各種業務場景都得以靈活實現。
⑹ 如何利用七牛免費雲存儲平台做微信游戲
一,登錄成功後,中間和右上角點擊+新建空間
二,建立空間填寫名稱,並設置為公開訪問
三,點擊內容管理,並點擊右上角的「上傳」按鈕
四,七牛不支持直接在網頁上批量上傳,不能分目錄分組管理文件(如果需要區分文件目錄路徑,就添加文件前綴)
五,因為這些原因,如果文件較多的話,直接在七牛網頁上管理文件是很不方便的,所以建立大家用七牛的客戶端工具,在網頁的右下角。
六,沒有命令行操作經驗的,win系統建議用qrsbox。
七,下載QRSBox後,解壓文件。進入解壓後的目錄,雙擊qrsbox.exe,彈出軟體界面:
其中,access_key 和 secret_key 在七牛雲存儲平台上點擊左上角的房子圖標進入首頁,再點擊賬號設置,在左邊的菜單導航上選擇密匙(查看AccessKey/SecretKey),分別填入上圖的對應輸入框中即可。
同步源目錄:就是本地的文件路徑(例如D:\tianxing)表示同步D盤的tianxing文件夾到七牛空間上。
空間名:就是步驟二中,你創建的七牛空間。設置好後,D:\tianxing文件夾內的所有文件會自動同步到你的七牛雲空間上。
八,七牛系統分配的文件URL和其他相關設置在當前空間的空間設置上可以查看。
到此,七牛雲的使用方法就是這樣了。
⑺ 關於七牛雲存儲自定義URL的問題
近段時間將使用七牛雲存儲來存放用戶上傳的數據,客戶端通過七牛的js-sdk與七牛交互,服務端C#實現了七牛相關的介面。在這過程中多多少少遇到點問題,在這里總結一下。原文: 使用七牛雲存儲的一些經驗總結
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#
byte[] key = System.Text.Encoding.UTF8.GetBytes(Qiniu.Conf.Config.SECRET_KEY);
using (HMACSHA1 hmac = new HMACSHA1(key))
{
var t = filterContext.Request.Content.ReadAsStringAsync();
t.Wait();
string rawbody = t.Result;
log.DebugFormat("request's rawbody : {0}", rawbody);
string text = filterContext.Request.RequestUri.PathAndQuery + "\n" + rawbody;
log.DebugFormat("PathAndQuery + \n + rawbody : {0}", text);
byte[] digest = hmac.ComputeHash(System.Text.Encoding.UTF8.GetBytes(text));
string computed = Qiniu.Util.Base64URLSafe.Encode(digest);
log.DebugFormat("Computed hash after base64 : {0}", computed);
IEnumerable<string> auths;
if (filterContext.Request.Headers.TryGetValues("Authorization", out auths) && auths.Count() == 1)
{
string auth = auths.First();
log.DebugFormat("Authorization in header : {0}", auth);
if (auth.StartsWith("QBox "))
{
var arr = auth.Substring(5).Split(':');
if (arr.Length == 2)
{
if (arr[1] != computed)
{
log.ErrorFormat("Authorization failed. Since auth from header {0} not equals computed {1}", arr[1], computed);
}
else
{
log.Debug("Authorization success.");
//only pass can be return
return;
}
}
else
{
log.Error("Callback Authorization's format is invalid, can not find two part after split by ':'.");
}
}
else
{
log.Error("Callback Authorization's format is invalid, missing leading 'QBox '.");
}
}
else
{
log.Error("The request from qiniu callback is missing 'Authorization'");
}
filterContext.Response = filterContext.Request.CreateResponse(System.Net.HttpStatusCode.Forbidden);
}
如下幾個注意點:
- 明文應當是請求的path+querystring部分和rawbody
- 對於.NET而言,明文和key都需要用UTF-8編碼變換成位元組才能進行簽名。而php中的hash_hmac函數完全不用這么復雜...
- 簽名的結果再用base64的url安全的方式編碼,再與請求的http頭部的Authorization比較
建議官方在文檔中加入一些相對底層一些的編程語言的實現,php太高端了...
## js-sdk實現略顯粗糙 ##
在使用過程中,我發現[官方的js-sdk](https://github.com/qiniupd/qiniu-js-sdk/)有幾個我覺得不好的地方:
**不能為每個文件獲取UpToken**
試想,在文件上傳過程中有獲取UpToken是必須的,而且UpToken又需要包含預處理指令,不同的文件顯然需要不同的UpToken,而在js-sdk的實現中,只在初始化這個上傳組件對象的時候請求一次上傳憑證,後面所有的上傳都需要使用這個預先得到的UpToken:
```javascript
uploader.bind('Init', function(up, params) {
getUpToken();
});
於是我修改了這部分,在 BeforeUpload 事件中請求UpToken。建議官方考慮更改這個地方
只能實現分片上傳,無法斷點續傳
js-sdk的實現在分片上傳的實現上,是很簡單的,不僅沒有使用分片,而是分塊(一塊4m,調用mkblk),而且沒有實現持久化ctx,或者類似的回調或介面。4m分塊這個問題還可以不追究,沒有實現持久化ctx就說不過去了,不持久化怎麼實現斷點續傳撒?!就算不實現,也應該給出回調的入口,讓調用者來實現持久化,而我實在無法找到這個'空子'可鑽,只能直接在源碼上改動了。
沒有復用流行類庫的東西
這個其實算不上問題,因為作為一個不依賴jquery的sdk,當然不能使用jquery現成的東西,比如ajax。不依賴jquery就算了,依賴plupload是幾個意思嘛,還依賴全局對象...於是最後,我乾脆自己將sdk改成了Backbone的類,將不要的東西統統去掉,使用jquery和underscore簡化代碼了...
⑻ 如何在WordPress中使用七牛雲存儲
首先需要申請七牛雲存儲的賬號,申請好後,點擊創建空間,選擇空間類型為公開空間,提交。
配置空間,點擊一鍵加速網站。鏡像源填寫自己網站域名。確認加速。
接下來在WordPress後台選擇添加我愛水煮魚的「WPJAM 七牛鏡像存儲」插件並啟用。進入插件的基本設置頁面。
七牛綁定的域名:就是我們上面獲取的:http://wptest.qiniudn.com。
*注意:如果博客安裝的是在子目錄下,比如
http://www.xxx.com/blog,這里
也需要帶上子目錄
/blog。比如:http://wptest.qiniudn.com/blog
七牛空間名:設置為我們一開始設置的wptest
ACCESS
KEY 和SCRET
KEY:可以在七牛後台>賬戶設置>密鑰頁面獲取。
其他設置默認即可。
⑼ 七牛雲存儲的音頻水印怎麼加php版本的
此 SDK 適用於 PHP 5.1.0 及其以上版本。基於 七牛雲存儲官方API 構建。使用此 SDK 構建您的網路應用程序,能讓您以非常便捷地方式將數據安全地存儲到七牛雲存儲上。無論您的網路應用是一個網站程序,還是包括從雲端(服務端程序)到終端(手持設備應用)的架構的服務或應用,通過七牛雲存儲及其 SDK,都能讓您應用程序的終端用戶高速上傳和下載,同時也讓您的服務端更加輕盈。
SDK源碼地址:https://github.com/qiniu/php-sdk/tags
應用接入
獲取Access Key 和 Secret Key
資源管理介面
1 查看單個文件屬性信息
2 復制單個文件
3 移動單個文件
4 刪除單個文件
上傳下載介面
1 文件上傳
1.1 上傳流程
1.2 上傳策略
2 文件下載
2.1 公有資源下載
2.2 私有資源下載
數據處理介面
1 圖像
1.1 查看圖像屬性
1.2 查看圖片EXIF信息
1.3 生成圖片預覽
貢獻代碼
許可證
應用接入
1. 獲取Access Key 和 Secret Key
要接入七牛雲存儲,您需要擁有一對有效的 Access Key 和 Secret Key 用來進行簽名認證。可以通過如下步驟獲得:
開通七牛開發者帳號
登錄七牛開發者自助平台,查看 Access Key 和 Secret Key 。
資源管理介面
1.查看單個文件屬性信息
示例代碼如下:
require_once("qiniu/rs.php");
$bucket = "phpsdk";
$key = "pic.jpg";
$accessKey = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';
Qiniu_SetKeys($accessKey, $secretKey);
$client = new Qiniu_MacHttpClient(null);
list($ret, $err) = Qiniu_RS_Stat($client, $bucket, $key);
echo "Qiniu_RS_Stat result: \n";
if ($err !== null) {
var_mp($err);
} else {
var_mp($ret);
}
2. 復制單個文件
示例代碼如下:
require_once("qiniu/rs.php");
$bucket = "phpsdk";
$key = "pic.jpg";
$key1 = "file_name1";
$accessKey = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';
Qiniu_SetKeys($accessKey, $secretKey);
$client = new Qiniu_MacHttpClient(null);
$err = Qiniu_RS_Copy($client, $bucket, $key, $bucket, $key1);
echo "====> Qiniu_RS_Copy result: \n";
if ($err !== null) {
var_mp($err);
} else {
echo "Success!";
}
3. 移動單個文件
示例代碼如下:
require_once("qiniu/rs.php");
$bucket = "phpsdk";
$key = "pic.jpg";
$key1 = "file_name1";
$accessKey = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';
Qiniu_SetKeys($accessKey, $secretKey);
$client = new Qiniu_MacHttpClient(null);
$err = Qiniu_RS_Move($client, $bucket, $key, $bucket, $key1);
echo "====> Qiniu_RS_Move result: \n";
if ($err !== null) {
var_mp($err);
} else {
echo "Success!";
}
4. 刪除單個文件
示例代碼如下:
require_once("qiniu/rs.php");
$bucket = "phpsdk";
$key1 = "file_name1";
$accessKey = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';
Qiniu_SetKeys($accessKey, $secretKey);
$client = new Qiniu_MacHttpClient(null);
$err = Qiniu_RS_Delete($client, $bucket, $key1);
echo "====> Qiniu_RS_Delete result: \n";
if ($err !== null) {
var_mp($err);
} else {
echo "Success!";
}
上傳下載介面
###1. 文件上傳
為了盡可能地改善終端用戶的上傳體驗,七牛雲存儲首創了客戶端直傳功能。一般雲存儲的上傳流程是:
客戶端(終端用戶) => 業務伺服器 => 雲存儲服務
這樣多了一次上傳的流程,和本地存儲相比,會相對慢一些。但七牛引入了客戶端直傳,將整個上傳過程調整為:
客戶端(終端用戶) => 七牛 => 業務伺服器
客戶端(終端用戶)直接上傳到七牛的伺服器,通過DNS智能解析,七牛會選擇到離終端用戶最近的ISP服務商節點,速度會比本地存儲快很多。文件上傳成功以後,七牛的伺服器使用回調功能,只需要將非常少的數據(比如Key)傳給應用伺服器,應用伺服器進行保存即可。
1.1上傳流程
在七牛雲存儲中,整個上傳流程大體分為這樣幾步:
業務伺服器頒發 uptoken(上傳授權憑證)給客戶端(終端用戶)
客戶端憑借 uptoken 上傳文件到七牛
在七牛獲得完整數據後,發起一個 HTTP 請求回調到業務伺服器
業務伺服器保存相關信息,並返回一些信息給七牛
七牛原封不動地將這些信息轉發給客戶端(終端用戶)
需要注意的是,回調到業務伺服器的過程是可選的,它取決於業務伺服器頒發的 uptoken。如果沒有回調,七牛會返回一些標準的信息(比如文件的 hash)給客戶端。如果上傳發生在業務伺服器,以上流程可以自然簡化為:
業務伺服器生成 uptoken(不設置回調,自己回調到自己這里沒有意義)
憑借 uptoken 上傳文件到七牛
善後工作,比如保存相關的一些信息
服務端生成 uptoken 代碼如下:
require_once("qiniu/rs.php");
$bucket = 'phpsdk';
$accessKey = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';
Qiniu_SetKeys($accessKey, $secretKey);
$putPolicy = new Qiniu_RS_PutPolicy($bucket);
$upToken = $putPolicy->Token(null);
上傳文件到七牛(通常是客戶端完成,但也可以發生在服務端):
上傳字元串
require_once("qiniu/io.php");
require_once("qiniu/rs.php");
$bucket = "phpsdk";
$key1 = "file_name1";
$accessKey = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';
Qiniu_SetKeys($accessKey, $secretKey);
$putPolicy = new Qiniu_RS_PutPolicy($bucket);
$upToken = $putPolicy->Token(null);
list($ret, $err) = Qiniu_Put($upToken, $key1, "Qiniu Storage!", null);
echo "====> Qiniu_Put result: \n";
if ($err !== null) {
var_mp($err);
} else {
var_mp($ret);
}
上傳本地文件
require_once("qiniu/io.php");
require_once("qiniu/rs.php");
$bucket = "phpsdk";
$key1 = "file_name1";
$accessKey = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';
Qiniu_SetKeys($accessKey, $secretKey);
$putPolicy = new Qiniu_RS_PutPolicy($bucket);
$upToken = $putPolicy->Token(null);
$putExtra = new Qiniu_PutExtra();
$putExtra->Crc32 = 1;
list($ret, $err) = Qiniu_PutFile($upToken, $key1, __file__, $putExtra);
echo "====> Qiniu_PutFile result: \n";
if ($err !== null) {
var_mp($err);
} else {
var_mp($ret);
}
1.2 上傳策略
uptoken 實際上是用 AccessKey/SecretKey 進行數字簽名的上傳策略(Qiniu_RS_PutPolicy),它控制則整個上傳流程的行為。讓我們快速過一遍你都能夠決策啥:
class Qiniu_RS_PutPolicy
{
public $Scope; // 必選項。可以是 bucketName 或者 bucketName:key
public $CallbackUrl; // 可選
public $CallbackBody; // 可選
public $ReturnUrl; // 可選, 更貼切的名字是 redirectUrl。
public $ReturnBody; // 可選
public $AsyncOps; // 可選
public $EndUser; // 可選
public $Expires; // 可選。默認是 3600 秒
}
scope 限定客戶端的許可權。如果 scope 是 bucket,則客戶端只能新增文件到指定的 bucket,不能修改文件。如果 scope 為 bucket:key,則客戶端可以修改指定的文件。
callbackUrl 設定業務伺服器的回調地址,這樣業務伺服器才能感知到上傳行為的發生。
callbackBody 設定業務伺服器的回調信息。文件上傳成功後,七牛向業務伺服器的callbackUrl發送的POST請求攜帶的數據。支持 魔法變數 和 自定義變數。
returnUrl 設置用於瀏覽器端文件上傳成功後,瀏覽器執行301跳轉的URL,一般為 HTML Form 上傳時使用。文件上傳成功後瀏覽器會自動跳轉到 returnUrl?upload_ret=returnBody。
returnBody 可調整返回給客戶端的數據包,支持 魔法變數 和 自定義變數。returnBody 只在沒有 callbackUrl 時有效(否則直接返回 callbackUrl 返回的結果)。不同情形下默認返回的 returnBody 並不相同。在一般情況下返回的是文件內容的 hash,也就是下載該文件時的 etag;但指定 returnUrl 時默認的 returnBody 會帶上更多的信息。
asyncOps 可指定上傳完成後,需要自動執行哪些數據處理。這是因為有些數據處理操作(比如音視頻轉碼)比較慢,如果不進行預轉可能第一次訪問的時候效果不理想,預轉可以很大程度改善這一點。
關於上傳策略更完整的說明,請參考 uptoken。
2. 文件下載
七牛雲存儲上的資源下載分為 公有資源下載 和 私有資源下載 。
私有(private)是 Bucket(空間)的一個屬性,一個私有 Bucket 中的資源為私有資源,私有資源不可匿名下載。
新創建的空間(Bucket)預設為私有,也可以將某個 Bucket 設為公有,公有 Bucket 中的資源為公有資源,公有資源可以匿名下載。
2.1 公有資源下載
如果在給bucket綁定了域名的話,可以通過以下地址訪問。
[GET] http://<domain>/<key>
示例代碼:
$key = 'pic.jpg';
$domain = 'phpsdk.qiniudn.com';
//$baseUrl 就是您要訪問資源的地址
$baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);
其中可以到七牛雲存儲開發者自助網站綁定, 域名可以使用自己一級域名的或者是由七牛提供的二級域名(<bucket>.qiniudn.com)。注意,尖括弧不是必需,代表替換項。
2.2 私有資源下載
私有資源必須通過臨時下載授權憑證(downloadToken)下載,如下:
[GET] http://<domain>/<key>?e=<deadline>&token=<downloadToken>
注意,尖括弧不是必需,代表替換項。
私有下載鏈接可以使用 SDK 提供的如下方法生成:
require_once("qiniu/rs.php");
$key = 'pic.jpg';
$domain = 'phpsdk.qiniudn.com';
$accessKey = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';
Qiniu_SetKeys($accessKey, $secretKey);
$baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);
$getPolicy = new Qiniu_RS_GetPolicy();
$privateUrl = $getPolicy->MakeRequest($baseUrl, null);
echo "====> getPolicy result: \n";
echo $privateUrl . "\n";
數據處理介面
七牛支持在雲端對圖像, 視頻, 音頻等富媒體進行個性化處理
1. 圖像
1.1 查看圖像屬性
require_once("qiniu/rs.php");
require_once("qiniu/fop.php");
$key = 'pic.jpg';
$domain = 'phpsdk.qiniudn.com';
$accessKey = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';
Qiniu_SetKeys($accessKey, $secretKey);
//生成baseUrl
$baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);
//生成fopUrl
$imgInfo = new Qiniu_ImageInfo;
$imgInfoUrl = $imgInfo->MakeRequest($baseUrl);
//對fopUrl 進行簽名,生成privateUrl。 公有bucket 此步可以省去。
$getPolicy = new Qiniu_RS_GetPolicy();
$imgInfoPrivateUrl = $getPolicy->MakeRequest($imgInfoUrl, null);
echo "====> imageInfo privateUrl: \n";
echo $imgInfoPrivateUrl . "\n";
將$imgInfoPrivateUrl粘貼到瀏覽器地址欄中就可以查看該圖像的信息了。
1.2 查看圖片EXIF信息
require_once("qiniu/rs.php");
require_once("qiniu/fop.php");
$key = 'pic.jpg';
$domain = 'phpsdk.qiniudn.com';
$accessKey = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';
Qiniu_SetKeys($accessKey, $secretKey);
//生成baseUrl
$baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);
//生成fopUrl
$imgExif = new Qiniu_Exif;
$imgExifUrl = $imgExif->MakeRequest($baseUrl);
//對fopUrl 進行簽名,生成privateUrl。 公有bucket 此步可以省去。
$getPolicy = new Qiniu_RS_GetPolicy();
$imgExifPrivateUrl = $getPolicy->MakeRequest($imgExifUrl, null);
echo "====> imageView privateUrl: \n";
echo $imgExifPrivateUrl . "\n";
1.3 生成圖片預覽
require_once("qiniu/rs.php");
require_once("qiniu/fop.php");
$key = 'pic.jpg';
$domain = 'phpsdk.qiniudn.com';
$accessKey = '<YOUR_APP_ACCESS_KEY>';
$secretKey = '<YOUR_APP_SECRET_KEY>';
Qiniu_SetKeys($accessKey, $secretKey);
//生成baseUrl
$baseUrl = Qiniu_RS_MakeBaseUrl($domain, $key);
//生成fopUrl
$imgView = new Qiniu_ImageView;
$imgView->Mode = 1;
$imgView->Width = 60;
$imgView->Height = 120;
$imgViewUrl = $imgView->MakeRequest($baseUrl);
//對fopUrl 進行簽名,生成privateUrl。 公有bucket 此步可以省去。
$getPolicy = new Qiniu_RS_GetPolicy();
$imgViewPrivateUrl = $getPolicy->MakeRequest($imgViewUrl, null);
echo "====> imageView privateUrl: \n";
echo $imgViewPrivateUrl . "\n";
貢獻代碼
Fork
創建您的特性分支 (git checkout -b my-new-feature)
提交您的改動 (git commit -am 'Added some feature')
將您的修改記錄提交到遠程 git 倉庫 (git push origin my-new-feature)
然後到 github 網站的該 git 遠程倉庫的 my-new-feature 分支下發起 Pull Request
⑽ java怎麼使用sdk接入微雲網盤
要接入七牛雲存儲,您需要擁有一對有效的 Access Key 和 Secret Key 用來進行簽名認證。可以通過如下步驟獲得:
開通七牛開發者帳號
登錄七牛開發者自助平台,查看 Access Key 和 Secret Key
在獲取到 Access Key 和 Secret Key 之後,您可以按照如下方式進行密鑰配置:
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
上傳下載介面
上傳流程
在七牛雲存儲中,整個上傳流程大體分為這樣幾步:
業務伺服器頒發 uptoken(上傳授權憑證)給客戶端(終端用戶)
客戶端憑借 uptoken 上傳文件到七牛
在七牛獲得完整數據後,根據用戶請求的設定執行以下操作:
a. 如果用戶設定了returnUrl,七牛雲存儲將反饋一個指向returnUrl的HTTP 303,驅動客戶端執行跳轉;
b. 如果用戶設定了callbackUrl,七牛雲存儲將向callbackUrl指定的地址發起一個HTTP 請求回調業務伺服器,同時向業務伺服器發送數據。發送的數據內容由callbackBody指定。業務伺服器完成回調的處理後,可以在HTTP Response中放入數據,七牛雲存儲會響應客戶端,並將業務伺服器反饋的數據發送給客戶端;
c. 如果兩者都沒有設置,七牛雲存儲根據returnBody的設定向客戶端發送反饋信息。
需要注意的是,回調到業務伺服器的過程是可選的,它取決於業務伺服器頒發的 uptoken。如果沒有回調,七牛會返回一些標準的信息(比如文件的 hash)給客戶端。如果上傳發生在業務伺服器,以上流程可以自然簡化為:
業務伺服器生成 uptoken(不設置回調,自己回調到自己這里沒有意義)
憑借 uptoken 上傳文件到七牛
善後工作,比如保存相關的一些信息