首頁

目前文章總數:157 篇

  

最後更新:2024年 12月 07日

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

日期:2018年 09月 22日

標籤: C# Asp.NET Framework Windows Forms DropBox

摘要:C# 學習筆記



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






第一部分:開啟DropBox API Developers 權限,並且取得Access Token

Step 1: 連線到開發者頁面

連結前往


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大綱

黑框 : 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: 使用API的方法介紹

這章節介紹使用方法,下一章節進入實作擷取下載檔案的方法,由上至下:
folder 資料夾,路徑為 /image
file 檔案,路徑為/dropbox paper 新手指南.url
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產生連結位置
※path 可以透過第三章節取得目錄、檔案位置進行組合。

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




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: 執行結果

取得檔案下載位置