お客さんに、撮った動画を指定の共有フォルダーへアップしてくれるよう依頼しても、いつもルートフォルダーへアップするので、DropboxのAPIで解決した話です。
作ったプログラムは、ルートフォルダにあるファイルを、指定のフォルダーへ移動させるというものです。
では早速いきましょう。
1.DropboxのAPIを使えるようにする
こちらの記事が詳しいので、参考にしてください。
Individual Scopesの権限は、全て、 write read ができるようにしておいてください。
2.ルートのファイル一覧を取得
下の関数でファイルが取得できます。
一つ注意することは、ルートパスのファイルを取得する場合、"path" => "/" ではなく、 "path" => "" とするということです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
function dfilelist($path){ $headers = array('Authorization: Bearer xxx', 'Content-Type: application/json'); $ch = curl_init('https://api.dropboxapi.com/2/files/list_folder'); $parameters = array( "path" => "$path", ); $curlOptions = array( CURLOPT_HTTPHEADER => $headers, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($parameters), CURLOPT_RETURNTRANSFER => true, CURLOPT_VERBOSE => true ); curl_setopt_array($ch, $curlOptions); $response = curl_exec($ch); curl_close($ch); return $response; } |
3.ファイルの移動
ファイルを移動する関数は以下の通りです。
$filename には、「/hoge.jpg」などの変数を入れます。
to_pathに入れる変数が「/test/」のようにフォルダ名だけだとうまくいかないので注意してください。必ず、「/test/aaa.jpg」のようにファイル名まで指定する必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
function move($filename){ $headers = array('Authorization: Bearer xxx', 'Content-Type: application/json'); $ch = curl_init('https://api.dropboxapi.com/2/files/move_v2'); $parameters = array( 'from_path' => "$filename", 'to_path'=> "/test{$filename}", 'allow_ownership_transfer' => true, 'autorename'=> true, ); $curlOptions = array( CURLOPT_HTTPHEADER => $headers, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($parameters), CURLOPT_RETURNTRANSFER => true, CURLOPT_VERBOSE => true ); curl_setopt_array($ch, $curlOptions); $response = curl_exec($ch); curl_close($ch); } |
以上となります。
日本語の解説記事が全然無いので、参考になれば幸いです。