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

第17回 Windows Live Application Based Storage API(2)

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

ファイルのダウンロード

最後はアップロードしたファイルのダウンロードについてです。ダウンロードはフォルダ・ファイル情報一覧の取得と同様にGETメソッドを使います。リソースへのパスにバイナリデータを示す末尾が「$value」のものを指定するとバイナリデータとして応答されます。

ダウンロードを行うメソッドは次のようになります。リクエストの応答で得られたバイナリデータをそのままWebサイトのレスポンスとして使用しています。

Public Function DownloadFile(ByVal path As String) As XmlDocument
    Dim document As New XmlDocument
    Dim request As HttpWebRequest = CreatedNewRequest(path, "GET")

    Try
        Using response As HttpWebResponse = DirectCast(request.GetResponse, HttpWebResponse), _
              reader As New System.IO.BinaryReader(response.GetResponseStream)

            Me.Response.ContentType = response.ContentType
            Me.Response.BinaryWrite(reader.ReadBytes(CInt(response.ContentLength)))
            Me.Response.End()
        End Using
        Return Nothing

    Catch webEx As WebException
        document.InnerXml = "<exception>" & webEx.Message & "</exception>"
        Return document
    End Try
End Function

ファイルを示すツリーノードをクリックした場合はDownloadFileメソッドを呼ぶようにResourceTreeView_SelectedNodeChangedメソッドを修正しましょう。メソッドの最初の部分を次のように変更します。

Dim selectedNode As TreeNode = ResourceTreeView.SelectedNode

If selectedNode.Value.EndsWith("/$value") Then
    DownloadFile(selectedNode.Value)
    Exit Sub
End If

TreeNode.Valueプロパティの末尾をみてファイルのツリーノードかどうかを判別しています。これでクリックしたときにそのファイルがダウンロードおよび表示されるようになります。DownloadFileメソッドは値を返すようにしていますが上のコードでは利用していません。

おわりに

以上で最初に示したWebアプリケーションが完成しました。ながながと書きましたが,HTTPメソッドによりほぼ共通した方法でユーザーデータの各操作ができることがわかります。作成したWebアプリケーションはUIの表示がくずれたり操作によっては例外が発生したりすることもあると思いますが,基本的な操作は確認できるのではないかと思います。このアプリケーションがApplication Based Storage APIの理解の手助けになれば幸いです。

次回も,まだもう少しApplication Based Storage APIを扱う予定です。

著者プロフィール

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

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

URL:http://katamari.jp