Możliwość wznowienia pobierania multimediów jest funkcją w bibliotece klienta .NET interfejsu API Google od wersji 1.4.0. Biblioteki związane z interfejsami API Google zawierają wygodne metody interakcji z tę funkcję.
Protokół pobierania multimediów z możliwością wznawiania jest podobny do protokołu przesyłania multimediów z możliwością wznawiania, jest opisana na przykład na stronie przesyłania multimediów dla interfejsu Drive API.
Interesuje mnie to,
MediaDownloader
W tej implementacji pobierania multimediów z możliwością wznawiania pobieranie multimediów jest pobierane we fragmentach (rozmiar fragmentu można skonfigurować).
Przykładowy kod
Jeśli metody w bibliotekach związanych z interfejsem API zawierają parametr „supportsMediaDownload
” w dokumencie Discovery,
potem Download
i DownloadAsync
wygodne metody są dostępne w klasie żądania.
Te metody pobierają dane multimedialne do pliku Stream
.
przez podany obiekt. Na przykład:
{ // 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); }