エンジニアレポート

WEBシステムのストレージ代わりにDropboxを使ってみた(PHP + Dropbox API v2)

2020年02月25日

PHPでDropboxAPIを使う

データスタジアムのエンジニア・二宮です。初めてのエントリーとなります。よろしくお願いします。

最近はシステム内で完結するだけでなく、外部のクラウドサービスと連携することを求められるケースもありますね。今回は、とあるWEBシステムでDropboxと連携する機会があったので、そのときの知見をお伝えします。

Dropbox API v2は公式のPHP用sdkが用意されていません。デファクトとなっているサードパーティ製sdkがありますが、このときはcURLでの直接HTTPリクエストを利用しました。

事前準備:API用の登録を行う

https://www.dropbox.com/developers
ここから「Create your app」→「Dropbox API」で登録します。
登録したら、「generate access token」でアクセストークンを生成してメモしておきます。(この辺はよくUIが変わるようなので適宜読み替えてください)

確認:Dropbox API Explorerでテスト

公式にHTTPリクエストのテスト画面があるので、ここでパラメータの渡し方やレスポンスなどを確認しておきましょう。

以下、

  • ファイル一覧を取得する
  • 指定ファイルの共有リンクを取得する
  • ファイルをアップロードする

のコードを解説します。 ※冗長的に記述している部分があります。

ファイル一覧を取得する

特定フォルダ下のファイル一覧を取得する場合は、
・files/list_folder
・files/list_folder/continue
を使います。

オプションでサブフォルダ下も見るかどうかなど指定可能です。list_folderで取得し、さらに続きがある場合はlist_folder/continueで続きを取得することになります。

指定ファイルの共有リンクを取得する

取得したファイルのダウンロード用のリンクが欲しい場合は共有リンクを取得します。
・sharing/list_shared_links

また、共有リンクを発行することもできます。
・sharing/create_shared_link_with_settings

これを組み合わせて、共有リンクを取得(なければ発行した上で取得)します

ファイルをアップロードする

アップロードの場合はファイル情報の取得とは異なり、ヘッダに「Dropbox-API-Arg」としてパラメータを指定する必要があります。
・files/upload

ファイルデータはfreadでPOSTしてやる形です。

これでDropboxをストレージ代わりにしたサービスもつくれます。 もちろん無料プランでは雀の涙ほどの容量なので、案件の性格次第というところですが。

共有リンクのパラメータについて

最後に小ネタのご紹介。

共有リンクを発行したとき、以下のようなURLが生成されます。 https://www.dropbox.com/s/********?dl=0

このパラメータを「dl=0」から「raw=1」に変えてやると直接表示モードになり、例えば画像ファイルであればimgタグのsrcに指定することができるようになります。

パラメータ別の挙動をまとめると、以下のとおりです。

■デフォルト
・ファイル https://www.dropbox.com/s/********?dl=0 ・フォルダ https://www.dropbox.com/sh/********?dl=0 アクセスすると、Dropboxのプレビューページに遷移します。

■直接ダウンロード:dl=1にする
・ファイル https://www.dropbox.com/s/********?dl=1 ・フォルダ https://www.dropbox.com/sh/********?dl=1 アクセスすると、ダウンロードが開始されます。(フォルダの場合、zipダウンロード)

■直接表示:raw=1にする
・ファイル https://www.dropbox.com/s/********?raw=1 ※フォルダの場合は、zipダウンロードになります。

エンジニア募集中!

データスタジアムでは一緒に働いていただけるエンジニアを募集しています。野球、サッカー、バスケなどスポーツが好きな方であれば、とても面白い仕事ができる会社です。興味を持たれた方はぜひこちらをご覧ください。

エンジニアトップ エンジニアインタビュー エンジニアレポート

  • 採用情報
  • おしらせ
  • 掲載事例

ページトップヘ