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

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

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

フォルダー・ファイル情報の変更

続いて,フォルダーまたはファイルの情報の変更についてです。APIでは,名前と説明のみ変更できます。名前と説明は,FolderFileオブジェクトのnamedescriptionにあたります。

情報の変更は,HTTP PUTメソッドを使用します。変更したい内容のJSONデータを次のように指定し,フォルダーまたはファイルを示すURLへアクセスします。nameとdescriptionはどちらかひとつでも構いません。

{
    name: "新しいフォルダー名",
    description: "ほむほむ"
}

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

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

{name: "新しいフォルダー名", description: "ほむほむ"}

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

$res = update($token, 'file.xxxxx', '新しいフォルダー名', "ほむほむ");

function update($token, $path, $name, $desc) {
    $data = '{name: "' . $name . '", description: "' . $desc . '"}';
    $url = 'https://apis.live.net/v5.0/' . $path;
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, 
        array("Authorization: Bearer $token", 
              "Content-Type: application/json"));
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
    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);
}

フォルダーの説明(description)は,SkyDriveで図1のように表示されます。

図1 フォルダー名の変更

図1 フォルダー名の変更

前回に紹介したとおりLive ConnectでSkyDriveにアップロードできるファイルの種類は文書や写真など限定されています。ファイル名をサポートしていない拡張子のものへ変更しようとすると,エラーメッセージが返ります。

フォルダー・ファイルの削除

次は,フォルダーまたはファイルの削除です。フォルダー・ファイルを示すURLにHTTP DELETEメソッドでアクセスすると削除できます。HTTPの通信内容は次のようになります。

DELETE https://apis.live.net/v5.0/file.xxxxx?access_token=ACCESS_TOKEN HTTP/1.1
Host: apis.live.net
Connection: Keep-Alive

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

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

function delete_file($token, $path) {
    $url = 'https://apis.live.net/v5.0/' . $path;
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Bearer $token"));
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');

    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);
}

SkyDriveは,普通にサービスを使用していてもそうですが,一度削除したフォルダーやファイルを元に戻せません。フォルダーを削除すると,そのフォルダーに含まれるすべてのフォルダーやファイルが削除されます。削除する場合は,気を付けて行いましょう。

著者プロフィール

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

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

URL:http://katamari.jp