勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPからDBX Platformを利用してDropbox内にディレクトリ(フォルダ)を作成する方法

  PHP

PHPからDBX Platformを利用してDropbox内にディレクトリ(フォルダ)を作成したい。以下に実装方法をメモ。

 

Dropbox側の準備

Dropbox側の準備については以下過去記事を参考に「アプリの作成~リフレッシュトークンの取得」まで済ませておくこと。

https://taitan916.info/blog/archives/4694#Dropbox

 

実装方法

ソースコード

<?php
const APP_KEY = '【App key】';
const APP_SECRET = '【App secret】';
const REFRESH_TOKEN = '【リフレッシュトークン】';


// 一時的なアクセストークンを取得
function getAccessToken() {
    $url = 'https://api.dropboxapi.com/oauth2/token';
    $data = [
        'grant_type'    => 'refresh_token',
        'refresh_token' => REFRESH_TOKEN,
        'client_id'     => APP_KEY,
        'client_secret' => APP_SECRET
    ];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

    $res = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    $access_token = '';
    if( !curl_errno($ch) && $http_code == "200" ){
        $res = json_decode($res, true);
        $access_token = $res['access_token'];
    } else {
        echo "ERROR: Failed to access Dropbox API : " . curl_error($ch) . "<br>";
    }

    curl_close($ch);

    return $access_token;
}


function createDir($access_token, $path) {
    $url = 'https://api.dropboxapi.com/2/files/create_folder_v2';

    $headers = array(
        'Authorization: Bearer ' . $access_token,
        'Content-Type: application/json',
    );

    $param = array(
        "path" => $path,
        "autorename" => true
    );

    $options = array(
        CURLOPT_URL => $url,
        CURLOPT_HTTPHEADER => $headers,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => json_encode($param),
        CURLOPT_RETURNTRANSFER => true,
    );

    $ch = curl_init();
    curl_setopt_array($ch, $options);

    $res = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    if (!curl_errno($ch) && $http_code == "200") {
        $flg = true;
    } else {
        $flg = false;
    }

    curl_close($ch);

    return $flg;
}

//一時的なアクセストークンを取得
$access_token = getAccessToken();

$path = '/test_dir';

$flg = createDir($access_token, $path);

if( $flg ){
    echo 'success';
}else{
    echo 'error';
}

ディレクトリについて

Dropbox側の準備で作成したディレクトリがルートディレクトリになり、その下の階層に作成される。

今回の場合だと「php_connection_test/test_dir」というディレクトリが作成される。

 

参考サイト

https://qiita.com/Ella_Engelhardt/items/c33f08b6b427eab8b310#dropbox%E3%81%AB%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B

 - PHP

  関連記事

PHPからDBX Platformを利用してDropbox内のファイルを削除する方法

以前にPHPからDropboxのファイル一覧のデータ(ファイル名や更新日時等)を ...

PHPからDBX Platformを利用してDropbox内のファイル一覧を取得する方法

以前にPHPからDropboxにファイルをアップロードするという記事を書いたが、 ...

PHPからDBX Platformを利用してサーバ内のファイルをアップロードする方法

PHPで何らかのファイルを保存するようなケースだと今まではローカルに保存する、も ...