C#透過MegaApiClient存取MEGA雲端硬碟

摘要: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”);

 

最後放上範例

如果寫的不好,再請各位前輩多多指導嚕

下載位置