Scarica elementi multimediali

Il download di contenuti multimediali ripristinabili è una funzionalità della libreria client .NET dell'API di Google dalla versione 1.4.0-beta. Le librerie specifiche delle API di Google contengono metodi pratici per interagire con questa funzionalità.

Il protocollo di download di contenuti multimediali ripristinabili è simile al protocollo di caricamento di contenuti multimediali ripristinabili, come viene descritto, ad esempio, pagina di caricamento dei contenuti multimediali per l'API Drive.

La classe principale di interesse è MediaDownloader In questa implementazione del download di contenuti multimediali ripristinabili, i contenuti multimediali vengono scaricati in blocchi (la dimensione del blocco è configurabile).

Codice di esempio

Se i metodi nelle librerie specifiche dell'API contengono "supportsMediaDownload" nel documento di rilevamento, quindi Download e DownloadAsync nella classe di richiesta sono disponibili metodi di convenienza. Questi metodi scaricano i dati multimediali in un Stream fornito. Ad esempio:
{
    // 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);
}