標籤:雲端儲存 七牛 spread studio 8 七牛優惠券
??
兩個月前的發布的部落格《介紹一款開源的類Excel試算表軟體》引起了熱議:在部落格園有近2000個View、超過20個評論。 同時有熱心讀者電話諮詢如何能夠在SpreadDesing中實現儲存Excel雲檔案,既通過雲方式讀取、載入Excel檔案。在本文,我們就大家關心的雲端儲存進行實戰操練---基於SpreadDesign源碼基礎。
系統必備:
- 本文選用的國內比較流行的七牛雲端儲存。
- SpreadDesign.exe已經升級為最新的Spread Studio 8.35.20143.0核心
- .Netframework 4.0
- Windows 8.1 64系統
- Visual Studio 2013 社區版
要實現的功能列表如下:
註冊七牛雲端儲存帳號(有帳號的請跳過本節)
七牛雲端儲存 - 首頁 http://www.qiniu.com/ (友情給七牛做個宣傳,多謝七牛給葡萄城控制項提供的七牛雲端儲存優惠券)
七牛雲端儲存的核心團隊成員來自於盛大、金山、網龍、惠普等知名互連網公司。核心成員之間已合作多年。公司創始人許式偉先生曾在金山、百度和盛大等公司擔任重要領導崗位,具有多年儲存行業實戰經驗,被譽為國內最適合做雲端儲存的幾人之一。
話說7牛雲端儲存大有來頭!區別於國內外其他雲端儲存,七牛自行研發的全分布式架構解決了其他雲端儲存單一資料中心架構可能存在的風險,同時首創雙向加速特性對資料上傳下載均加速,使得資料訪問速度較傳統方案平均提升 50%以上。此外,鏡像儲存、用戶端直傳、斷點續上傳、雲端富ApsaraVideo for Media Processing等七牛雲端儲存專屬的功能也大大提升了開發效率,最大程度減少了伺服器資源浪費。
七牛官方新手上路連結體驗使用者:
- 儲存空間1GB
- 每月Put請求1萬次
- 每月下載流量1GB
- 每月Get請求10萬次
- 建立1個空間
- 僅支援富媒體上傳
升級為標準使用者:
- 儲存空間10GB
- 每月Put請求10萬次
- 每月下載流量10GB
- 每月Get請求100萬次
- 建立20個空間
- 使用七牛的全部功能
7牛雲端儲存需要3個資訊就可以使用了。
1,AK(AccessKey)
2,SK(SecretKey)
3, Bucket
進入帳號設定-密鑰可以找到如下資訊:
關於公開金鑰、秘鑰的安全問題,請參見官方的《公開金鑰密鑰應該放在哪裡?》
配置一個空間(Bucket),如在本文中我使用的是“grapecity”的空間---空間注意大小寫要和代碼中一致:
配置七牛雲C#開發環境
在七牛開發人員中心中,我們可以看到七牛提供了很多SDK:
點擊跳轉到C# SDK 使用指南的頁面。
通過七牛官網提供的URL,下載七牛的C# SDK,以及第三方的開源項目 Json.NET。
同時在GCDN社區,也提供了下載鏡像:http://gcdn.gcpowertools.com.cn/showtopic.aspx?topicid=13778&postid=73156#73156
配置很容易,添加這2個dll引用即可:
Qiniu.DLL
Newtonsoft.Json.dll
代碼實現
初始化七牛SDK代碼
Qiniu.Conf.Config.ACCESS_KEY = "5iujaJ62Q9eQc94uF0sgFzxwVTP-9c_hKq_2jC-j";Qiniu.Conf.Config.SECRET_KEY = "RMRV45M6J-GpLvz2pAgndn3i-MmTxnDcJMqwsWKG";private const string Bucket = "grapecity";private const string Domain = Bucket + ".qiniudn.com";
註:ACCESS_KEY、SECRET_KEY請自行通過七牛後台管理介面申請,每人可申請2對。
List檔案清單代碼
public void List(ListView listView1, string bucket = Bucket) { Qiniu.RSF.RSFClient rsf = new Qiniu.RSF.RSFClient(bucket); rsf.Prefix = ""; rsf.Limit = 100; List<DumpItem> items; while ((items = rsf.Next()) != null) { foreach (DumpItem item in items) { Stat(listView1, item.Key, bucket); } } } public void Stat(ListView listView1, string key, string bucket = Bucket) { RSClient client = new RSClient(); Entry entry = client.Stat(new EntryPath(bucket, key)); if (entry.OK) { ListViewItem item = new ListViewItem(new string[]{key, entry.MimeType, DateTime.FromFileTime(entry.PutTime).ToLongDateString(), entry.Fsize.ToString()}); listView1.Items.Add(item); } else { Console.WriteLine("Failed to Stat"); } }
註:key可使用檔案名稱,中文的檔案名稱也可以。
刪除檔案代碼:
public bool Delete(string key, string bucket = Bucket) { RSClient client = new RSClient(); CallRet ret = client.Delete(new EntryPath(bucket, key)); return ret.OK; }
下載檔案代碼
public string DownLoad(string key1, string domain = Domain) { string baseUrl = GetPolicy.MakeBaseUrl(domain, key1); string private_url = GetPolicy.MakeRequest(baseUrl); private_url = HttpUtility.UrlPathEncode(private_url); try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(private_url); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream stream = response.GetResponseStream(); string newFile = AppDomain.CurrentDomain.BaseDirectory + key1; FileStream write = new FileStream(newFile, FileMode.OpenOrCreate); stream.CopyTo(write); stream.Close(); write.Close(); return newFile; } catch (Exception ex) { System.Diagnostics.Debug.Assert(false, ex.Message); return ""; } }
設計Excel管理UI
彈出的“遠端管理檢視”提供了3個雲端儲存相關的功能:
- List:獲得雲端,對應ACCESS_KEY、SECRET_KEY、Bucket下的檔案清單
- Delete::刪除雲端的檔案
- DownLoad:從雲端下載選擇的檔案,
下載雲端的檔案後,直接傳給Spread.OpenExcel,即可在SpreadDesign上進行編輯、列印,非常方便。
編輯完成後,點擊“儲存到雲端”,在彈出的對話方塊中儲存為“本地修改後儲存的檔案.xlsx”,然後程式自動實現儲存到雲端。
在雲內容管理介面,重新整理可看到檔案被自動上傳了:
完整源碼:
http://git.oschina.net/GrapeCity/SpreadDesigner
小道訊息:目前還有少量七牛雲端儲存的試用優惠券(一個七牛賬戶只能只用一次),有需要請留言溝通。
《介紹一款開源的類Excel試算表軟體》續:七牛雲端儲存實戰(C#)