Connectを利用してSkyDriveのフォルダーとファイル情報の取得を紹介しました。今回はフォルダーの作成やファイルのアップロードなどの操作を行ってみましょう。これらの操作は待ち望んでいた人も多いのではないでしょうか。Liveと統合したアプリ開発ができるようになっています。ファイルのアップロードさっそくAPIを利用してのSkyDriveへのファイルアップロードについてみてみましょう。アップロードは,HTTPのPOSTまたはPUTメソッドで行います。アップロードを行うには,OAuthのスコープにwl.skydrive_updateを指定して,ユーザーからの認可を得る必要があります。ConnectでのOAuthについてはこれまでの内容を参照してください。POSTメソッドによるアップロードまず,POSTメソッドによるファイルのアップロードです。以下のようなフォルダーの内容を表すURLへファイルを送信します。SkyDrive直下のフォルダーのパスの場合は,/me/skydriveでした。/filesを付けてフォルダーの内容を表します。OAuthのアクセストークンを付け,次のURLへファイルをPOSTメソッドで送信するとアップロードできます。https://apis.live.net/v5.0/me/skydrive/files?access_token=ACCESS_TOKEN実際にサーバーへ送信するHTTPの通信内容は,次のようなテキストです。text/plainhogehoge-----------------------------7dc3801415811aa--サーバーからの応答は,ファイルの作成に成功した場合,次のようなJSON形式のデータです。作成されたファイルのidと一時的なファイルダウンロード用のURLが含まれています。POSTメソッドによる投稿ですので,簡単ですね。各種プログラミング言語で実装してみましょう。このあとPHPでのサンプルコードを示します。アップロード先のフォルダーの指定は,前回紹介したFolderオブジェクトのidの値を使います。URLは以下のようになります。このURLは,FolderやFileオブジェクトのupload_locationの値と同等です。https://apis.live.net/v5.0/FOLDER_ID/filesファイルが同名の場合,通常は上書きされますが,クエリーにoverwriteパラメーターを付け,値にfalseを指定してアクセスすると,同名のときエラーメッセージを返すようにできます。例:https://apis.live.net/v5.0/me/skydrive/files?overwrite=false&access_token=ACCESS_TOKENアクセストークンはURLに含めるだけでなく,次のようにHTTPのAuthorizationヘッダーとしての指定も可能です。これはアップロードに限った話ではありません。ACCESS_TOKENPUTメソッドによるアップロードPUTメソッドを使用した場合は,「⁠me/skydrive/files/sample.txt」のようにファイル名をURLに付けてアクセスします。HTTPの通信で送信するデータは次のようになります。Keep-Alivehogehogeサーバーからの応答は,POSTメソッドのときと同じです。SkyDrive上にあるファイルをPUTメソッドで上書きする場合は,Fileオブジェクトのidを使います。idを指定したパスだけでは,GETメソッドと同じ結果になり上書きされません。次のように/contentを付けてアクセスすると,既にあるファイルを上書きします。https://apis.live.net/v5.0/FILE_ID/content?access_token=ACCESS_TOKEN以上がファイルのアップロードの基本でした。ちなみに,アップロードしたファイルの共有状態は,アップロード先のフォルダーの共有の状態を継承するようです。公開されているフォルダーにアップロードすると,そのファイルも公開されている状態になります。ファイルの共有状態はAPIで変更できません。有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。