0028. DropBox API 於 Visaul studio 2015 版本 C# 取得雲端硬碟檔案、資料夾方法、下載檔案連結

圖片搜尋結果

環境

Windows 10 + Visual Studio 2015 + C# 
目的: 本篇介紹DropBox 空間,如何透過公開API服務,讀取雲端硬碟的資料 
Github: https://github.com/gotoa1234/DropboxExample
本篇分為三部分:
一、 開啟DropBox API Developers 權限,並且取得Access Token
二、 使用DropBox API 呼叫方法
三、 建置專案,實作取得資料的方法 
四、 延伸應用 - 取得連結下載檔案

一、開啟DropBox API Developers 權限,並且取得Access Token


Step 1:連線到開發者頁面 https://www.dropbox.com/developers

Step 2:登入帳號(右上角Sign In)

Step 3:建立我們的開發者權限 : 左邊 My apps -> 右上Create app 

Step 4:開啟存取權限範圍 (以下皆可依照需求變更調整)

               1. Choose an API -> 這邊選擇個人用戶 (如圖黑框)

               2. Choose the type of access you need -> Full Dropbox (如圖黑框,這裡表示全部資料夾、檔案皆可存取)

               3. Name your App -> 命名 (有規範,且不可重複,故不可以用圖片中的名稱)

               4. 選擇我同意 (I agree .......) ,然後Create app 

Step 5:取得Access Toke 

Step 6:取得Token如下圖:


二、使用DropBox API 呼叫方法


Step 1: 黑框 : API Explorer -> DropBox 提供API 叫用方法

                黃框 : API 叫用文件,依照語言的不同有各自的Libary叫用方式

Step 2:以下是我的DropBox 雲端硬碟資料夾

根目錄 : 2個檔案 + 1個資料夾

Image資料夾 : 1個檔案

Step 3:Step 1中選擇 API Explorer -> 選擇list_folder (取得DropBox 資料夾資訊) -> 輸入自己的Access Token -> Submit Call (執行Post)

 

Step 4:以下是執行呼叫回傳結果,這章節介紹使用方法,下一章節進入實作擷取下載檔案的方法

由上至下:

1. folder 資料夾,路徑為 /image

2. file 檔案,路徑為/dropbox paper 新手指南.url

3.file 檔案,路徑為/dropbox paper 新手指年.pdf


三、建置專案,實作取得資料的方法


Step 1:建立一個Visual 專案,該範例用WinForm

Step 2:進行Nuget 安裝 

Step 3:設定token 

/// <summary>
/// 訪問所有資料的DropBox Token
/// </summary>
private string AccessToken = "4sY3_IJMOQAASDASDSADABDASDSg4FDhDgWCYu-qdsdF5uzEZcWupHcQmMvjNjnPdgJW";

Step 4:寫好讀取資料夾Method

/// <summary>
/// 取得DropBox API 資料夾的Method
/// </summary>
/// <returns></returns>
async Task ListRootFolder()
{
    using (var dbx = new DropboxClient(this.AccessToken))
    {
        #region //位置 => 根目錄
        //根目錄的folder(資料夾)
        var list = await dbx.Files.ListFolderAsync(string.Empty, recursive: false);// Result;
        foreach (var item in list.Entries.Where(i => i.IsFolder))
        {
            Console.WriteLine("D  {0}/", item.Name);
        }
        //位置 => 根目錄
        //根目錄的所有檔案
        foreach (var item in list.Entries.Where(i => i.IsFile))
        {
            Console.WriteLine("F{0,8} {1}", item.AsFile.Size, item.Name);
        }
        #endregion

        #region //位置 => 根目錄/image
        // 根目錄/image 的所有檔案
        var list2 = await dbx.Files.ListFolderAsync("/image/");
        foreach (var item in list.Entries.Where(i => i.IsFile))
        {
            Console.WriteLine("F{0,8} {1}", item.AsFile.Size, item.Name);
        }
        #endregion



    }
}

Step 5:從FormLoad 叫用 (偷懶XD)

private void Form1_Load(object sender, EventArgs e)
{
    //呼叫DropBox api
    var task = Task.Run((Func<Task>)ListRootFolder);
    task.Wait();
}

Step 6:執行結果

我們已經可以透過程式碼叫用DropBox API 取得雲端硬碟的資料位置


四、延伸應用 - 取得下載檔案的連結


Step 1:這次要使用 get_temporary_link 進行下載檔案的功能 ※不可用Download 這會取得下載資訊,當初卡在這邊2~3小時,慢慢看文件才確定這邊的用法

Step 2:我們輸入 /image/docker.jpg 取得檔案連結,DropBox 有安全性限制,隔一段時間後下面的連結會失效,必須重新叫用API產生連結位置

 

https://dl.dropboxusercontent.com/apitl/1/AABY08h5aHOFbqCB14CN5R8FicM2952Hb9kq96ckibgKWjR_bkHWasKN7eYj2BS1zMVH7nzmgQb3cyEnLL3JzyZtLOcn-gmLCy4p347t5thUzWMIvFEhSe9lf-l2MqeG3m0KF15XYv-fsHcKdnGvWrvuOdZuRyQN8QkzD6zMaJOCSgOAn3zt8cdQghEcAKyOV82K8VGWEjkJTn-xx2VNwhZoRdkXUjxg378jtQh8IER-Avj_CH-xBDTbhu7XSQ_MwCWG5v80spzGJ03Jb5FMlM_L

※path 可以透過第三章節取得目錄、檔案位置進行組合。

 

Step 3:可以進行下載

Step 4:程式碼中我們增加mathod

/// <summary>
/// 呼叫DorpBox Image資料夾底下的圖片
/// </summary>
/// <returns></returns>
async Task Download(string path)
{
    using (var dbx = new DropboxClient(this.AccessToken))
    {
        try
        {
            var result = await dbx.Files.GetTemporaryLinkAsync(path);
            Console.Write(string.Format("download link : {0}", result.Link));
        }
        catch (Exception ex)
        {

        }

    }
}

Step 5:從FormLoad 呼叫

//呼叫DropBox api 取得檔案下載連結
var taskLink = Task.Run(() => Download("/image/docker.jpg"));
taskLink.Wait();

Step 6:執行結果 ->取得檔案下載位置