Fazer o download da mídia

O download de mídia recuperável é um recurso na biblioteca de cliente .NET da API do Google desde a versão 1.4.0-beta. As bibliotecas específicas da API do Google contêm métodos convenientes para interagir com esse recurso.

O protocolo de download de mídia retomável é semelhante ao protocolo de upload de mídia retomável, que é descrito, por exemplo, na página de upload de mídia da API Drive.

A principal classe de interesse é MediaDownloader. Nesta implementação do download de mídia retomável, o download do conteúdo de mídia é feito em blocos (o tamanho do bloco é configurável).

Exemplo de código

Se os métodos nas bibliotecas específicas da API contiverem o parâmetro "supportsMediaDownload" no documento de descoberta, os métodos de conveniência Download e DownloadAsync estarão disponíveis na classe de solicitação. Esses métodos fazem o download dos dados de mídia em um objeto Stream fornecido. Por exemplo:
{
    // 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);
}