Возобновляемая загрузка мультимедиа была функцией клиентской библиотеки Google API .NET начиная с бета-версии 1.4.0. Библиотеки, специфичные для Google API, содержат удобные методы для взаимодействия с этой функцией.
Протокол возобновляемой загрузки мультимедиа аналогичен протоколу возобновляемой загрузки мультимедиа, который описан, например, на странице загрузки мультимедиа для Drive API .
Основной класс, представляющий интерес — MediaDownloader
. В этой реализации возобновляемой загрузки мультимедиа контент загружается частями (размер блока настраивается).
Пример кода
Если методы в библиотеках, специфичных для API, содержат параметр «supportsMediaDownload
» в документе Discovery, то в классе запроса доступны удобные методы Download
и DownloadAsync
. Эти методы загружают мультимедийные данные в предоставленный вами объект 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); }