2017-05-19 3 views
0

Ich arbeite mit der Google Drive API zum ersten Mal und ich muss eine einfache TXT-Datei herunterladen, die als Inhalt nur eine einzige Zeile mit einer Versionsnummer (wie 2.5.1.0), aber wenn ich die Datei herunterlade und öffne, bekomme ich etwas völlig anderes.Datei heruntergeladen mit Google Drive API v3 hat andere Inhalte

Wenn ich nur die Datei mit einem beliebigen Browser herunterladen, hat es den erwarteten Inhalt, aber nicht, wenn ich es über meine Anwendung herunterladen.

Ich würde mich über jeden Hinweis diesbezüglich freuen.

Das ist mein Code so weit ist:

private void CheckForUpdates() 
    { 
     GoogleDrive drive = new GoogleDrive(); 
     string url = drive.GetFileURL("current.txt"); 
     HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url); 

     string tmpPath = Path.Combine(Path.GetTempPath(), "current.txt"); 
     request.Timeout = 5000; 
     WebClient response = new WebClient(); 
     response.DownloadFile(url, tmpPath); 
    } 

public string GetFileURL(string fileName) 
    { 
     DriveService service = GetDriveService(); 
     // Define parameters of request. 
     FilesResource.ListRequest listRequest = service.Files.List(); 
     listRequest.PageSize = 10; 
     listRequest.Fields = "nextPageToken, files(id, name, parents, properties, shared, webContentLink, webViewLink, fullFileExtension, capabilities)"; 
     listRequest.Q = string.Format("(name contains '{0}')", fileName); 
     IList<Google.Apis.Drive.v3.Data.File> files = listRequest.Execute().Files; 
     if (files.Count > 0) 
     { 
      string url = files[0].WebContentLink; 
      string id = files[0].Id;     
      return url; 
     } 
     return ""; 
    } 


private DriveService GetDriveService() 
    { 
     UserCredential credential; 
     DriveService service; 
     using (var stream = new FileStream(_pathClave, FileMode.Open, FileAccess.Read)) 
     { 
      string credPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); 
      credPath = _pathResult; 
      credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
       GoogleClientSecrets.Load(stream).Secrets, 
       Scopes, 
       "user", 
       CancellationToken.None, 
       new FileDataStore(credPath, true)).Result; 
     } 

     // Create Drive API service. 
     service = new DriveService(new BaseClientService.Initializer() 
     { 
      HttpClientInitializer = credential, 
      ApplicationName = ApplicationName, 
     }); 

     return service; 
    } 

Dies ist der Link: https://drive.google.com/uc?id=0B3P8S21qYracclVaamM2Skp4bzA&export=download

+0

„kann helfen, aber wenn ich die Datei herunterladen und öffne es, ich bekomme etwas ganz anderes. " Wir sind alle wirklich neugierig, was du bekommst. – pinoyyid

+0

Ich kann nicht den gesamten Inhalt der Datei einfügen, es ist zu lang. –

+0

aww. Nicht einmal ein kleiner Hinweis, was es enthalten könnte? Ein Pastebin Link? – pinoyyid

Antwort

0
 Imports System.Net 
     Imports System.ComponentModel 

     Dim Str As IO.Stream 
     Dim srRead As IO.StreamReader 
     Dim NewVer As String = "" 
     Dim req As WebRequest = WebRequest.Create("WebContentLink") 

     Dim resp As WebResponse = req.GetResponse 
     Str = resp.GetResponseStream 
     srRead = New IO.StreamReader(Str) 
     NewVer = srRead.ReadToEnd.Trim 

vb Code gut für mich gearbeitet

+1

Willkommen bei StackOverflow und vielen Dank für Ihre Antwort! Wenn Sie der Meinung sind, dass Ihr Code hilfreich ist, fügen Sie bitte einige Einsichten hinzu, warum dieser Code funktioniert und was genau er funktionieren soll, danke! –

Verwandte Themen