Я работаю, чтобы подключиться к Google Drive, перечислить все файлы в любых форматах, а затем загрузить его физически на моем жестком диске. Я использовал методы, которые Google API подготовил для меня. Но я думаю, как я работал, у меня просто есть доступ к содержимому каждого файла, и я не могу этого сделать.
Не могли бы вы помочь мне узнать, какая конфигурация мне нужна для этого?
public static Google.Apis.Drive.v2.Data.FileList ListFiles(DriveService service, FilesListOptionalParms optional = null)
{
try
{
if (service == null)
throw new ArgumentNullException("service");
var request = service.Files.List();
request = (FilesResource.ListRequest)SampleHelpers.ApplyOptionalParms(request, optional);
return request.Execute();
}
catch (Exception ex)
{
throw new Exception("Request Files.List failed.", ex);
}
}
Я называю этот метод и для каждого файла, который я хочу загрузить на свой ПК:
FileList files_list = DriveListExample.ListFiles(service, null);
if (files_list.Items.Count != 0)
{
foreach (var file in files_list.Items)
{
DriveListExample.DownloadFile(service, file, DownloadDirectoryName);
Console.WriteLine("\"{0}\" ", file.Title + " downloaded completely!");
}
}
здесь, если я могу получить доступ к downloadUrl каждого файла, я могу проверить другой способ загрузки. Но это ноль, и это мой метод загрузки:
public static void DownloadFile (служба DriveService, файл File, строка saveTo)
{
var request = service.Files.Get(file.Id);
var stream = new System.IO.MemoryStream();
Console.WriteLine(file.FileExtension);
request.MediaDownloader.ProgressChanged += (IDownloadProgress progress) =>
{
switch (progress.Status)
{
case DownloadStatus.Downloading:
{
Console.WriteLine(progress.BytesDownloaded);
break;
}
case DownloadStatus.Completed:
{
Console.WriteLine("Download complete.");
SaveStream(stream, saveTo);
break;
}
case DownloadStatus.Failed:
{
Console.WriteLine("Download failed.");
break;
}
}
};
try
{
request.Download(stream);
}
catch (Exception ex)
{
Console.Write("Error: " + ex.Message);
}
}
В этом процессе состояние загрузки не удалось.
Я также проверил области действия и обнаружил, что с помощью этих строк я могу просто загрузить файлы, созданные в этом приложении:
private static readonly string[] Scopes = new[] { DriveService.Scope.DriveFile, DriveService.Scope.Drive };
Но мне нужно после перечисления всех файлов, я могу скачать каждый из них.
Не могли бы вы помочь мне с решением или другими рабочими кодами?