メディアをダウンロード

再開可能なメディア ダウンロードは、1.4.0 ベータ版以降、Google API .NET クライアント ライブラリの機能として利用されています。Google API 固有のライブラリには、この機能を操作するための便利なメソッドが用意されています。

再開可能なメディア ダウンロード プロトコルは、Drive API のメディア アップロード ページなどで説明されている再開可能なメディア アップロード プロトコルに似ています。

対象となるメインクラスは MediaDownloader です。再開可能メディア ダウンロードのこの実装では、メディア コンテンツはチャンクでダウンロードされます(チャンクサイズは構成可能です)。

サンプルコード

API 固有のライブラリのメソッドに Discovery ドキュメントの「supportsMediaDownload」パラメータが含まれている場合、リクエスト クラスで DownloadDownloadAsync のコンビニエンス メソッドを使用できます。これらのメソッドにより、指定した Stream オブジェクトにメディアデータがダウンロードされます。次に例を示します。
{
    // Create the service using the client credentials.
    var storageService = new StorageService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = "APP_NAME_HERE"
        });
    // Get the client request object for the bucket and desired object.
    var getRequest = storageService.Objects.Get("BUCKET_HERE", "OBJECT_HERE");
    using (var fileStream = new System.IO.FileStream(
        "FILE_PATH_HERE",
        System.IO.FileMode.Create,
        System.IO.FileAccess.Write))
    {
        // Add a handler which will be notified on progress changes.
        // It will notify on each chunk download and when the
        // download is completed or failed.
        getRequest.MediaDownloader.ProgressChanged += Download_ProgressChanged;
        getRequest.Download(fileStream);
    }
}

static void Download_ProgressChanged(IDownloadProgress progress)
{
    Console.WriteLine(progress.Status + " " + progress.BytesDownloaded);
}