none
Upload File su Google Drive? RRS feed

  • Domanda

  • Salve, ho realizzato un applicazione C# che effettua il salvataggio di una stringa in un file di testo. Ora, la mia intenzione era quella di effettuare l' upload del file su GDrive, ma dopo aver abilitato l' API di Google Drive non riesco a capire ciò che devo fare per collegare l' applicazione. Sareste così gentili da darmi una mano? Grazie mille
    martedì 1 dicembre 2015 21:38

Risposte

Tutte le risposte

  • Ciao, devi installare l'SDK per .NET.

    Qui trovi una serie di guide che ti spiegano le varie funzionalità offerte dall'SDK:

    http://www.daimto.com/google-drive-api-c/

    In caso è sempre meglio consultare la documentazione ufficiale aggiornata:

    https://developers.google.com/drive/web/quickstart/dotnet




    Martino Bordin (http://blogs.ugidotnet.org/martinobordin)

    mercoledì 2 dicembre 2015 07:29
  • Grazie mille per l' aiuto. Sto provando a effettuare l' upload dopo aver configurato il tutto,ma non ne vuole sapere. Non restituisce alcun errore, ma nel mio drive non vedo nulla! Lascio il mio codice, che praticamente è un copia-incolla dell' esempio che mi hai dato.

    Grazie ancora

    Ivan

    using Google.Apis.Auth.OAuth2; using Google.Apis.Drive.v2; using Google.Apis.Drive.v2.Data; using Google.Apis.Services; using Google.Apis.Util.Store; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace DriveQuickstart { class Program { 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; } public static Google.Apis.Drive.v2.Data.File uploadFile(DriveService _service, string _uploadFile, string _parent) { if (System.IO.File.Exists(_uploadFile)) { Google.Apis.Drive.v2.Data.File body = new Google.Apis.Drive.v2.Data.File(); body.Title = System.IO.Path.GetFileName(_uploadFile); body.Description = "File uploaded by Diamto Drive Sample"; body.MimeType = GetMimeType(_uploadFile); body.Parents = new List<ParentReference>() { new ParentReference() { Id = _parent } }; // File's content. byte[] byteArray = System.IO.File.ReadAllBytes(_uploadFile); System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray); try { FilesResource.InsertMediaUpload request = _service.Files.Insert(body, stream, GetMimeType(_uploadFile)); request.Upload(); return request.ResponseBody;

    } catch (Exception e) { Console.WriteLine("An error occurred: " + e.Message); return null; } } else { Console.WriteLine("File does not exist: " + _uploadFile); return null; } } static string[] Scopes = { DriveService.Scope.DriveReadonly }; static string ApplicationName = "Drive API .NET Quickstart"; static void Main(string[] args) { UserCredential credential; using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read)) { string credPath = System.Environment.GetFolderPath( System.Environment.SpecialFolder.Personal); credPath = Path.Combine(credPath, ".credentials/drive-dotnet-quickstart"); credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, Scopes, "user", CancellationToken.None, new FileDataStore(credPath, true)).Result; Console.WriteLine("Credential file saved to: " + credPath); } // Create Drive API service. var service = new DriveService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = ApplicationName, }); // Define parameters of request. FilesResource.ListRequest listRequest = service.Files.List(); listRequest.MaxResults = 10; // List files. IList<Google.Apis.Drive.v2.Data.File> files = listRequest.Execute() .Items; Console.WriteLine("Files:"); if (files != null && files.Count > 0) { foreach (var file in files) { Console.WriteLine("{0} ({1})", file.Title, file.Id); } } else { Console.WriteLine("No files found."); } uploadFile(service, "C:/prova.txt", null); Console.Read(); } } }



    mercoledì 2 dicembre 2015 09:18
  • Ciao, non ho provato il codice ma hai provato a mettere dei breackpoint dentro i vari catch per vedere se c'è qualche eccezione? il "C:\prova.txt" esiste

    Martino Bordin (http://blogs.ugidotnet.org/martinobordin)

    mercoledì 2 dicembre 2015 11:26