c# で Dropbox API からアップロード

c#Dropboxにファイルアップロードしようと思い、ググって出てきたSharpBoxというライブラリを使ってみた。
使ってみたのだけれど、いざマニュアル読んでみると記述がバラバラだったり、チュートリアルがいい加減だったりして、使えそうになかった。


他に良いものはないかと探したところ、DropNetというものを見つけた。
こちらは簡単に使えたのでオススメです。

とりあえずアップロードできるところまで

using System;
using System.IO;
using DropNet;

namespace test {
    class Program {
        private const string dropbox_app_key = "apikey";
        private const string dropbox_app_secret = "apisecret";
        
        static void Main(string[] args) {
            
            DropNetClient _client;
            
            if ((Properties.Settings.Default.dropbox_user_token=="")) {
                // 初回の起動 - Dropboxへのアクセスを許可してトークンを app.config に書く
                _client = new DropNetClient(dropbox_app_key, dropbox_app_secret);
                _client.GetToken();
                var url = _client.BuildAuthorizeUrl();

                Console.Write("以下のURLにブラウザで接続して、DropBoxへのアクセスを許可してください。\n\n" +
                    url + "\n\n" +
                    "アクセスを許可したら、Enterを押してください。 >");

                var tmp = Console.ReadLine();

                var accessToken = _client.GetAccessToken();
                if (accessToken == null) return;
                
                // app.config に書く
                Properties.Settings.Default.dropbox_user_token = accessToken.Token;
                Properties.Settings.Default.dropbox_user_secret = accessToken.Secret;
                Properties.Settings.Default.Save();
            } else { 
                // 2回目以降の起動
                _client = new DropNetClient(dropbox_app_key, dropbox_app_secret, Properties.Settings.Default.dropbox_user_token, Properties.Settings.Default.dropbox_user_secret);
            }


            // ファイルアップロード
            using (var fs = new FileStream(@"C:\temp\1.jpg", FileMode.Open) ) {
                var uploaded = _client.UploadFile( "/Public/", "1.jpg", fs);
            }
        }
    }
}

DropboxのPublicフォルダはWebサーバーのようにだれでもアクセスできるので、そういった方向で使用するためのアップローダーを書いてみたという訳です。



DropNetはNuGetで追加できます。


Dropbox APIキーは Dropbox Developersで取得します。