2012年12月13日 星期四

把玩 Dropbox SDK 範例

Dropbox 官方 Python SDK 附帶了一些範例,位於 example 資料夾中:

image

其中 cli_client.py 是一個 Dropbox 的指令介面工具,而 web_upload_app.py 則可以讓你透過 Web 上傳檔案到 Dropbox,這兩個範例很適合入門,我們來看怎麼使用這兩個範例。

設定 App key 與 App secret

要執行這些範例,我們需要修改範例程式填入事先申請的 App key 與 App secret,並且輸入 app 所用的 access type:

# XXX Fill in your consumer key and secret below
# You can find these at
http://www.dropbox.com/developers/apps
APP_KEY = 'XXX'
APP_SECRET = 'XXX'
ACCESS_TYPE = 'app_folder' # should be 'dropbox' or 'app_folder' as configured for your app

有關如何取得 App key 與 App secret,請參考「建立 app 取得 App key 與 App Secret」一文。

cli_client.py

cli_client.py 是一個 Dropbox 的指令介面工具,可以讓使用者以指令的方式上傳下載檔案。cli_client.py 的使用方法大致如下:

Step 1: 執行方式:

python cli_client.py

Step 2: 載入程式後,可以下 help 指令看有哪些指令可用:

image

Step 3: 第一次使用必須輸入 login 進行登入:

image

如上圖紅框處,輸入 login 後會自動產生一個 URL,請複製貼到瀏覽器上訪問這個 URL,接著 Dropbox 會詢問你要不要授權給 app,此時請點選 Allow:

image

授權後,網頁會出現成功的訊息:

image

Step 4: 回到 cli_client.py 的畫面,按下 Enter 鍵,這時候 Dropbox 會出多 Apps > a-demo-app 這一層資料夾:

image

Step 5: 之後便可以下指令來操作使用者的 a-demo-app 這個資料夾的內容了。你可以下 account_info 指令取得帳戶資訊:

image

下載檔案要用 get 指令,上傳檔案用 put 指令,要刪除檔案或資料夾用 rm 指令。至於指令的用法請用 help 指令查看說明文件。

web_upload_app.py

web_upload_app.py 是一個可以讓你透過 Web 上傳檔案到 Dropbox 的工具。web_upload_app.py 的使用方法大致如下:

Step 1: 執行方式:

python web_upload_app.py

執行後,程式會要求你打開瀏覽器連到 http://localhost:8000

image
▲ Web Server 預設開啟在 port 8000,你可以再加一個參數自行決定要用哪個 port number

Step 2: 打開瀏覽器連到 http://localhost:8000

image

Step 3: 一樣,Dropbox 會詢問你要不要授權給 app,此時請點選 Allow:

 image

Step 4: 通過授權後,會看到一個上傳檔案用的網頁介面:

image

在這個網頁介面上,你可以上傳檔案,例如我上傳了一個 Main.c:

image

上傳完畢後,過沒多久,我的 Dropbox 就同步收到剛剛上傳的檔案了。(檔案路徑會是在 Dropbox 的 Apps > a-demo-app > Main.c)

在原來的 web_upload_app.py 視窗中,你可以看到所有的 HTTP Requests:

image

參考資料

5 意見:

LCW 提到...

你好

我稍微跟著測試了一下這個web_upload_app.py
範例發現他在上傳"中文檔名"的時候好像會有問題!

另外我原本以為這個web_upload_app.py是可以讓別人上傳資料進去我的dropbox 但後來發現他是使別人可以上傳到"自己"dropbox的Web Server

我用學校的固定IP請同學連近來上傳測試後發現的..

這幾個Dropbox的範例真的蠻有趣的,希望以後多多交流

Cooper Maa 提到...

沒錯,dropbox 的 app 可以上傳檔案到使用者 "自己專屬" 的 dropbox.上個月的消息,據說 dropbox 用戶數量已經突破 1 億個.所以,如果有 10 個人用你的 app,你就可以收集 10 個人的帳戶資訊,如果有一百萬個人用,你就可以收集一百萬個帳戶資訊。簡而言之,透過 dropbox 開放的 API,我們寫的 app 就有機會直接與全球數千萬甚至上億個用戶取得聯繫。

Cooper Maa 提到...

我剛試了一下 web_upload_app.py 上傳中文檔,確實沒辦法成功上傳。我想應該是編碼問題,晚上來研究一下。謝謝你的 feedback

歡迎常來啊 ^o^

Cooper Maa 提到...

我修改了 web_upload_app.py,現在上傳有
中文檔名" 的檔案也沒問題了。

cli_client.py 也有同樣的問題,待會我修一修,晚上分享出來

Cooper Maa 提到...

現在可以上傳有中文檔名的檔案了,請試看看:

Dropbox SDK 範例中文支援
http://coopermaa2nd.blogspot.tw/2012/12/dropbox-sdk_18.html