Medien herunterladen

Fortsetzbare Mediendownloads sind seit der Betaversion 1 .4.0 in der.NET-Clientbibliothek der Google API enthalten. Die Google API-spezifischen Bibliotheken enthalten praktische Methoden zur Interaktion mit dieser Funktion.

Das Protokoll für fortsetzbare Mediendownloads ähnelt dem Protokoll für fortsetzbare Medienuploads, das beispielsweise auf der Medien-Uploadseite für die Drive API beschrieben wird.

Die wichtigste Klasse von Interesse ist MediaDownloader. Bei dieser Implementierung des fortsetzbaren Mediendownloads wird der Medieninhalt in Blöcken heruntergeladen. Die Größe des Blocks ist konfigurierbar.

Beispielcode

Wenn die Methoden in den API-spezifischen Bibliotheken im Discovery-Dokument den Parameter „supportsMediaDownload“ enthalten, sind die praktischen Methoden Download und DownloadAsync in der Anfrageklasse verfügbar. Mit diesen Methoden werden die Mediendaten in ein Stream-Objekt heruntergeladen, das du zur Verfügung stellst. Beispiel:
{
    // 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);
}