Deepak Tiwari (D'pak) Ответов: 1

Загрузите изображение или медиафайл на Google Диск с помощью C# в MVC


Я хочу загрузить изображение на google Диск с помощью c# в mvc.

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

My code is 

<pre> string[] scopes = new string[] { DriveService.Scope.Drive,
                             DriveService.Scope.DriveFile};
            var clientId = "clientid";      
            var clientSecret = "client Secret Key";             
            
            var credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets
            {
                ClientId = clientId,
                ClientSecret = clientSecret
            },
                                                                    scopes,
                                                                    Environment.UserName,
                                                                    CancellationToken.None,
                                                                    new FileDataStore("MyAppsToken")).Result;
            //Once consent is recieved, your token will be stored locally on the AppData directory, so that next time you wont be prompted for consent. 

            DriveService service = new DriveService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = "application Name",
            });
  uploadFile(service, "D:\\img\\adv2.jpeg", "", "photos");


public static void uploadFile(DriveService _service, string _uploadFile, string _parent, string _descrp = "Uploaded with .NET!")
       {
           if (System.IO.File.Exists(_uploadFile))
           {
               var body = new Google.Apis.Drive.v3.Data.File();
               //File body = new File();
               body.Name = System.IO.Path.GetFileName(_uploadFile);
               body.Description = _descrp;
               body.MimeType = GetMimeType(_uploadFile);
              // body.Parents = new List<ParentReference>() { new ParentReference() { Id = _parent } };

               byte[] byteArray = System.IO.File.ReadAllBytes(_uploadFile);
               System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray);
               FilesResource.CreateMediaUpload request;
               try
               {
                   //FilesResource.InsertMediaUpload request = _service.Files.Insert(body, stream, GetMimeType(_uploadFile));
                   //request.Upload();
                   //return request.ResponseBody;
                   using (var stream1 = new System.IO.FileStream(_uploadFile, System.IO.FileMode.Open))
                   {
                       request = _service.Files.Create(body, stream1, GetMimeType(_uploadFile));
                       request.Fields = "id";
                       request.Upload();
                   }
                   var file = request.ResponseBody;
                   var fili = file.Id;
               }
               catch (Exception e)
               {
                   //MessageBox.Show(e.Message, "Error Occured");
               }
           }
           else
           {
               //MessageBox.Show("The file does not exist.", "404");
           }
       }
       private static string GetMimeType(string fileName)
       {
           string mimeType = "application/unknown";
           string ext = System.IO.Path.GetExtension(fileName).ToLower();
           Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext);
           if (regKey != null && regKey.GetValue("Content Type") != null)
               mimeType = regKey.GetValue("Content Type").ToString();
           return mimeType;
       }



Я получаю null в "файле"
var file = request.ResponseBody;
.
пожалуйста, подскажите мне, почему файл не загружается..

1 Ответов

Рейтинг:
0

Deepak Tiwari (D'pak)

после изменения значений массива scope я столкнулся с той же проблемой.

[no name]

Вместо _service.Файлы.Создать(тело, потоке stream1, GetMimeType(_uploadFile));создать использовать функцию "вставить функцию" и перейти непосредственно к выполнению следующего оператора как запрос.Загрузить() с из поля настроек.

Deepak Tiwari (D'pak)

Вставить функцию, не входящую в _service.Файлы.

[no name]

Проверить здесь.протокол HTTPS://ВСП.daimto.ком/гугл-диск-АПИ-с-загрузить/

Deepak Tiwari (D'pak)

я посещаю эту ссылку, но проблема в том, что в моем приложении FilesResource.InsertMediaUpload.InsertMediaUpload
и _service.Файлы.Вставить опцию не получится.

Файловый ресурс.InsertMediaUpload request = _service.Файлы.Insert(body, stream, GetMimeType(_uploadFile));
поэтому я не могу использовать эту линию

[no name]

Затем проверьте, является ли версия текущей.

Deepak Tiwari (D'pak)

я установил Install-Package Google.Apis.Drive.v3 -версия 1.25.0.824 версия

[no name]

Используйте новую версию https://www.nuget.org/packages/Google.Apis-да.Езды.В2/