cgprakash Ответов: 1

Как скачать файлы с Google Диска и сохранить их в папку на локальном компьютере с помощью C#


Привет,
Мне нужно загрузить файлы с google Диска и сохранить их в папке на локальном компьютере с помощью C#.
Я сделал так, как описано в документации Google Developer API (https://developers.google.com/drive/v3/web/manage-downloads) но я получаю файл с недопустимым форматом. Пожалуйста, подскажите, как его скачать.

Что я уже пробовал:

downloadUrl = url - адрес файла (например: https://drive.google.com/uc?id=1ULNeKdDoCRmWgPPBW8-d1EGUZgqvA1Ul&экспорт=загрузка)
именем = имя с расширением

private bool SaveToDir(string downloadUrl,string filename) {
string filePath = Server.MapPath("imports/");
bool resp = false;
DriveService ds = new DriveService();
Uri temp = new Uri(downloadUrl);
string fileId = HttpUtility.ParseQueryString(temp.Query).Get("id");
var req = ds.Files.Get(fileId.Trim());
var stream = new MemoryStream();
req.MediaDownloader.ProgressChanged += (Google.Apis.Download.IDownloadProgress dp)=> {
switch (dp.Status)
{
 case Google.Apis.Download.DownloadStatus.Downloading:
      Message("downloading, please wait....");
      break;
 case Google.Apis.Download.DownloadStatus.Completed:
      using (FileStream file = new FileStream(filePath, FileMode.Create, FileAccess.Write))
            {
                stream.WriteTo(file);
                Message("File Downloaded successfully.");
            }
      resp = true;
      break;
 case Google.Apis.Download.DownloadStatus.Failed:
      Message("Failed to Download.");
      resp = false;
      break;
 }
 };
 req.Download(stream);

Afzaal Ahmad Zeeshan

Какой недопустимый формат вы получаете?

cgprakash

предположим, если я выберу док. файл для загрузки, файл заканчивается .doc, но если я попытаюсь открыть его, то он покажет недопустимый формат, а если я попытаюсь открыть его в vs code IDE, то он покажет html страницы входа google.

1 Ответов

Рейтинг:
0

Afzaal Ahmad Zeeshan

Это происходит потому, что сам файл поврежден, так как это не файл .doc, а HTML-документ для входа в Google, который был загружен как файл, который вы хотели загрузить.

Что вам нужно сделать, так это проверить, аутентифицирует ли Google ваш запрос или нет. Вы не включили код для аутентификации пользователей; — как вы это делаете? OAuth2? Ключ?

Это зависит от способа аутентификации пользователей, Пожалуй, начать здесь, Об Авторизации |  Drive REST API  |  Разработчики Google[^Также небольшой отрывок из их страницы,

Цитата:
Ваше приложение должно использовать OAuth 2.0 для авторизации запросов. Никакие другие протоколы авторизации не поддерживаются. Если ваше приложение использует Google Sign-In, некоторые аспекты авторизации обрабатываются за вас.
Но как Google Sign-In помогает вам, я не уверен в этом в данном контексте, поэтому OAuth2 был бы хорошим способом пойти.