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); }