使ってみよう! Windows Live SDK/API

第49回 SkyDrive API 概要(2)──ファイルのアップロードほか

この記事を読むのに必要な時間:およそ 6.5 分

フォルダー・ファイルの移動,ファイルのコピー

フォルダーとファイルの移動や,ファイルのコピーにもAPIは対応しています。移動とコピーは,あまり使う機会のないHTTP MOVEメソッドとCOPYメソッドで行います。

移動(またはコピー)先のフォルダーを次のようにJSONデータで指定します。移動の場合は,対象のフォルダーまたはファイルを示すURLに,コピーの場合は,対象のファイルを示すURLにアクセスします。

{
    destination: "folder.xxxxx"
}

移動の場合のHTTPの通信内容は次のようになります。

MOVE https://apis.live.net/v5.0/file.xxxxx?access_token=ACCESS_TOKEN HTTP/1.1
Content-Type: application/json
Host: apis.live.net
Content-Length: 60
Connection: Keep-Alive

{destination: "folder.xxxxx"}

コピーの場合,新しいFileオブジェクトの内容が返ってきます。

PHPでは次のように記述できます。

$res = move($token, 'file.xxxxx', 'folder.xxxxx');

function move($token, $src, $dest) {
    $data = '{destination: "' . $dest . '"}';
    
    $url = 'https://apis.live.net/v5.0/' . $src;
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, 
        array("Authorization: Bearer $token", 
              "Content-Type: application/json"));
    
    // (コピーの場合は MOVE を COPY に変更するとできます)
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'MOVE');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

    $res = curl_exec($ch);
    if ($no = curl_errno($ch)) {
        return false;
    }
    curl_close($ch);
    echo $res;
    return json_decode($res, true);
}

移動またはコピーは,同じユーザー内のフォルダーに限ります。共有されているフォルダーやファイルにLive Connectではアクセスできません。また,ひとつのアクセストークンでは,ひとりのユーザーリソースにしかアクセスできないため,必然的に同じユーザー内のフォルダーとなります。

ほかのユーザーへのフォルダーやファイルの移動・コピーは,SkyDrive自体も機能を提供していませんが,Live Connectを利用したWebアプリであればそういった機能も実現できそうですね。複数のユーザーから認可を受け,Webサーバーを中継してファイルを送るような仕組みを作れば可能です。

おわりに

今回はここまでです。基本的なフォルダーやファイル操作に関する内容を紹介しました。あわせてPHPの簡単なサンプルコードも紹介しました。処理している内容は単純なHTTPアクセスだけですので,ほかの言語でも容易に実現できると思います。

今回の内容のファイルのアップロードやフォルダーの作成などは,SkyDriveのWebサイトでもちろんできる内容です。ただ,これらを使って少し工夫すると,ユーザー間のファイルコピーのようなWebサイトでは提供されていないことも可能です。このあたりが,APIの使いどころのひとつかもしれませんね。ぜひAPIを利用してアプリを開発してみてください。

次回もSkyDrive APIの続きを紹介します。最終的にはSkyDriveと連携した簡単なアプリも開発する予定です。

著者プロフィール

松江祐輔(まつえゆうすけ)

日本システムウエア株式会社 勤務。現在,ハードウェア設計・検証業務を担当。大学生・大学院生時代はベンチャー企業 有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。好きな言語はVisual Basic。Microsoft MVP for Windows Live Platform(Jul 2010 - Jun 2011),Windows Live(Jul 2011 - Jun 2013)。

URL:http://katamari.jp