摘要:C#透過MegaApiClient存取MEGA雲端硬碟
我想MEGA免費空間(免空),對大家應該不陌生.剛好日前透過NUGET看到,已有作者gregg's透過MEGA所提供的API製作成.NET可引用的元件.
http://www.nuget.org/packages/MegaApiClient/1.0.4 nuget 下載網址
https://github.com/gpailler/MegaApiClient 原始碼
當然先看一下作者在GIT上所提供的使用方式
照著上面的範例做登入測試
MegaApiClient client = new MegaApiClient();
client.Login(“MEGA帳號”, “MEGA密碼”);
var nodes = client.GetNodes();
登入成功後最後透過GetNodes()方法取的所有你在MEGA上所有存放檔案與資料夾的資訊.
這邊先解釋一下,所呈現各個欄位型態的意義.
Type:root(根目錄),trash(垃圾桶),inbox(收件夾),Directory(資料夾),File(檔案)
Name:檔案名稱或資料夾名稱
Id:每個檔案或資料夾的專屬唯一值
繼續在往下看
這時候我們會發現,每一筆檔案資料中.會有一個ParentId的欄位,去對應到上一層的ID,
簡而言之就代表這檔案在這資料夾內.
想當然這是一個IEnumerable介面的集合,在透過LINQ去做篩選的動作
下列的範例是取得某一個資料夾內所有的檔案列表
既然我們能取得每一個資料夾與檔案的ID並有相對應的ParentId
var nodes = client.GetNodes();
IEnumerable condition = nodes.Where(w => w.Type == NodeType.File
&&w.ParentId=="jxVFTDSJ").Select(s=>s).ToList();
執行畫面
刪除檔案
這邊delete的方法如設置為true則檔案將會被放置在MEGA上的Trash(垃圾桶)的位置
var nodes = client.GetNodes();
Node del = nodes.FirstOrDefault(n => n.Type == NodeType.File && n.Id == "xxxxx");
client.Delete(del, true);
上傳檔案
var nodes = client.GetNodes();
//選擇所存放在MEGA的資料夾
Node myFolder = nodes.FirstOrDefault(n => n.Type == NodeType.Directory && n.Id == Id);
client.Upload(“C:\xxxx.doc”, myFolder);
新增MEGA資料夾
var nodes = client.GetNodes();
//選擇建立資料夾所在的階層
Node root = nodes.Single(n => n.Type == NodeType.Root);
client.CreateFolder(“資料夾名稱”, root);
下載檔案
var downloadfile= client.GetNodes();
Node root = downloadfile.Where(w => w.Id == “檔案ID”).FirstOrDefault();
client.DownloadFile(root, “C:\xxx.txt”);
最後放上範例
如果寫的不好,再請各位前輩多多指導嚕