2019/07/30PHPのcURLを使用してDropboxを活用する方法DropboxのAPIを通して現在稼働しているシステムと連携することができれば、Dropboxをより効率的に活用することができます。そのためには、まずDropboxのAPIの使い方を理解する必要があります。APIの使い方と理解を深めていきます。本文書では、cURLをある程度理解している方を対象に記載しています。cURLについて理解が不足している方は、まず下記の記事に目を通してみてください。あわせて読みたいこれでPHPでのcURL関数の使い方が理解できる本文書を読み終えるとDropboxのAPIを通して下記の操作が行えるようになります。Dropbox内に新しいフォルダを作成するアプリケーションの作成Dropboxのアプリケーションを作成するためには、ユーザ登録を行っておく必要があります。App)を行う必要があります。アプリケーションを作成することでDropboxに接続するために必要な認証情報であるアクセストークンの取得を行います。アプリケーションを作成する目的は、アクセストークンを取得することにあります。アプリケーションの作成は、Dropboxの開発者サイトで行います。以下のリンクからDropboxの開発者サイトに移動してください。https://www.dropbox.com/developers下記がDropboxの開発者サイトのトップページです。in”からログインを行ってください。app”をクリックしてください。APIを選択してください。Dropboxを選択します。app)を入れてください。appボタンがクリック可能になります。アクセスできる範囲の選択アプリケーションの作成が完了すると下記の画面が表示されます。tokenの下にあるGenerateボタンをクリックしてください。クリックするとアクセストークンの文字列が表示されます。これが今後必要になるアクセス情報です。それ以外については、入力しなくてもここで説明するcURLでのファイル操作には影響はありません。app画面Dropbox内フォルダのファイル一覧を取得するAPIを利用するためには、Dropbox側で用意している各操作用のURL、送信するヘッダーの内容、パラメータを事前に確認しておく必要があります。Endpointsに移動します。Documentation右のコラムからDropboxに保存されているファイルのリスト表示を行う/list_foldersを探して、クリックします。ファイルをリスト化するファイルのリストを表示したい場合にアクセスするURLの情報(エンドポイント)や、アクセスする際に必要となるパラメータの情報が記載れています。この内容を元にcurlの設定を行います。folder設定値Dropboxのドキュメントを元に設定したPHPのプログラムは下記の通りになります。(1)の取得したアクセストークンは、アプリケーションの作成時に取得したアクセストークンを入力してください。(2)のファイル一覧を取得したいフォルダのパスは、各自の環境に依存するので、ファイル一覧を取得したいフォルダのパスを記述してください。ドキュメントにある通り、path以外のパラメータも存在します。そのほかのパラメータ(recursive,include_media_info等)は初期値が決まっているので、今回は省略しています。他のパラメータを設定したい場合は、$post_fields変数の配列にパラメータを追加してください。var_dump($result);上記のプログラムで実行し、下記のような文字列が表示されればAPI経由でのDropboxへのアクセスは成功しています。"2018-11-06T11:22:21Z",json_decodeを使用してデコードを行うと日本語の文字に変換されるので、実際のファイル名と一致するのか確認することができます。var_dump(json_decode($result));testフォルダの下にdropboxのapi.docxというワードファイルがあることを確認できます。ファイル名以外にも修正日時、サイズ等も含まれています。サーバから送られてきた値については、ドキュメントを見ながら確認してください。string(24)下記では、サーバから送られてきた情報の中でファイル名だけforeachを使用して取り出し、表示させていきます。}testフォルダには、3つのファイルを保存していたので、ブラウザには保存されてる3つのファイル名が表示されます。testフォルダのファイル一覧DropBoxにファイルをアップロードする次は、DropboxのAPIを利用して、ファイルのアップロードを行います。Dropboxのドキュメントのuploadのページを開いてパラメータを確認してください。uploadドキュメントDropboxのドキュメントを元に設定したPHPのプログラムは下記の通りになります。(1)はアップロードを行いたいファイルのパスを設定してください。(2)では、アプリケーションの作成時に取得したアクセストークンを入力してください。(3)は、Dropbox側でファイルをアップロードするパスを設定してください。var_dump(json_decode($result));プログラムを実行後、必ずDropbox側にファイルが作成されていることを確認し、サイズが0でないことも確認してください。プログラムの間違いやcrulの設定に誤りがあるとファイルは作成できているが、ファイルの中身がない(サイズ0)ということも起こりえます。アップロード完了後、$result変数にサーバからの戻り値が入っているので、こちらでもサイズが0ではないか等確認することができます。戻り値についてはドキュメントを確認してください。Dropboxの中のファイルをダウンロードする次は、DropboxのAPIを利用して、ファイルのダウンロードを行います。DropboxのドキュメントのDownloadのページを開いてパラメータを確認してください。ダウンロードのパラメータは、ダウンロードしたいDropbox上に保管されているファイルのパスを指定するのみなので、非常にシンプルです。指定法オフはパス以外にもありますが、直感的にわかりやすいパスを指定して行っています。download(1)では、アプリケーションの作成時に取得したアクセストークンを入力してください。(2)はダウンロードを行いたいファイルのパスを設定してください。$resultには、ダウンロードに指定したファイルのrawデータが入っているので、(3)には、サーバへの保存方法を記述してください。(3)については環境に依存するので、コピーしても動作しません。$result;Dropboxの中のファイルのリンクを取得する次は、DropboxのAPIを利用して、ファイルのリンクのURLを取得します。リンクの取得(URL)をし、ブラウザのアドレスバーにコピーすれば、Dropbox内に保存したファイルを手元のPCに直接ダウンロードすることができます。Dropboxのドキュメントのget_temporary_linkのページを開いてパラメータを確認してください。Dropboxのドキュメントを元に設定したPHPのプログラムは下記の通りになります。(1)では、アプリケーションの作成時に取得したアクセストークンを入力してください。(2)はリンクを取得したいファイルのパスを設定してください。var_dump(json_decode($result));プログラム完了後、$result変数にサーバからの戻り値が入っているので、戻り値の中からリンクを取得する必要があります。その他の戻り値についてはドキュメントを確認してください。下記のように記述するとブラウザの画面上にリンクの設定されたファイル名が表示されます。リンクをクリックするとダウンロードが開始されます。href="'.$link.'">'.$file_name.'</a>';ブラウザには下記のようなリンクが表示されます。downloadリンクの表示Dropboxの中のフォルダ/ファイルの存在を確認する次は、DropboxのAPIを利用して、フォルダ/ファイルの存在の確認を行います。フォルダ/ファイルの存在のチェックには、get_metadataを使用しています。get_metadataでは、フォルダ/ファイルが存在する場合は、フォルダ/ファイルに関するメタ情報が返され、存在しない場合は、HTTPコード409で、not_foundのエラーが返されます。(1)では、アプリケーションの作成時に取得したアクセストークンを入力してください。(2)は存在の確認を行いたいフォルダ/ファイルのパスを設定してください。存在する場合は、下記のようなメタ情報が戻り値に入ります。存在しないフォルダをパスに設定して、実行するとnot_foundのエラーメッセージが戻されます。}curlのcurl_getinfoを使ってHTTPコードを確認すると存在した場合は、200。存在しない場合は、409が戻されます。HTTPコードを使用すれば存在の可否を判断することができます。CURLINFO_HTTP_CODE));Dropbox内に新しいフォルダを作成する次は、DropboxのAPIを利用して、新しいフォルダの作成を行います。get_metadataを利用してフォルダの存在をチェックし、もし存在しない場合は新規でフォルダを作成するといったことが可能になります。var_dump(json_decode($result));実行後は、Dropboxにフォルダが作成されているかどうか確認を行ってください。変数$resultには、作成したフォルダの情報が入っています。Dropbox内に新しいフォルダを作成する。