Возобновляемая загрузка больших файлов с googledrive

Мне нужно создать метод для возобновляемой загрузки большого файла из GoogleDrive под служебной учетной записью. Я создаю отдельное приложение в .Net 4.0, используя Google.Apis.Drive.v2, Google.Apis.Auth и Google.Apis.Oauth2.v2.

Мой текущий код:

DriveService service = new DriveService(new BaseClientService.Initializer() ...
var pathString = System.IO.Path.Combine(localFilePath, fileName);
using (var fileStream = System.IO.File.Create(pathString))
{
    Task<System.IO.Stream> streamTask = service.HttpClient.GetStreamAsync(downloadURL);
    System.IO.Stream stream = await streamTask;
    await stream.CopyToAsync(fileStream);
}

Однако GetStreamAsync, похоже, не поддерживает указание параметра диапазона.

Некоторые предложения рекомендуют использовать HttpWebRequest:

//Partial downloads: https://developers.google.com/drive/web/manage-downloads
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(
    new Uri(file.DownloadUrl));
request.AddRange(1000, 2000);
authenticator.ApplyAuthenticationToRequest(request);
HttpWebResponse response = (HttpWebResponse) request.GetResponse();

Проблема в том, что я не знаю, как получить аутентификатор IAuthenticator либо из DriveService, либо из ServiceAccountCredential. Также кажется, что использование HttpWebRequest медленнее.


person DerekB    schedule 29.09.2015    source источник
comment
Аналогично этой проблеме   -  person lazy    schedule 29.09.2015
comment
Почему бы вам не подать в суд на Media Downloader? Дополнительные сведения доступны здесь: developers.google.com/api-client- библиотека/dotnet/руководство/   -  person peleyal    schedule 20.10.2015