2016-05-19 2 views
4

Wie bekomme ich einen einzelnen Dateinamen von einer Get-Anfrage mit dem Laufwerk API?Google Drive V3 Api get Dateiname, C#

Ich habe eine Anfrage gemacht, aber es gibt keine Metadaten über die Datei, ich kann sie nur herunterladen.

var fileId = "0BwwA4oUTeiV1UVNwOHItT0xfa2M"; 
var request = driveService.Files.Get(fileId); 

Anscheinend gibt diese eine files.get in der Antwort nach diesem doc

Ich möchte nur eine Datei herunterzuladen und haben ihren Namen angezeigt, nicht nur seine ID

+0

Werfen Sie einen Blick hier: http://stackoverflow.com/questions/23063691/how-to-get-file-name-and-real-path-of-google-drive-document –

Antwort

0

Versuchen Sie, diese

/// 
    /// Download a file 
    /// Documentation: https://developers.google.com/drive/v2/reference/files/get 
    /// 
    /// a Valid authenticated DriveService 
    /// File resource of the file to download 
    /// location of where to save the file including the file name to save it as. 
    /// 
    public static Boolean downloadFile(DriveService _service, File _fileResource, string _saveTo) 
    { 

     if (!String.IsNullOrEmpty(_fileResource.DownloadUrl)) 
     { 
      try 
      { 
       var x = _service.HttpClient.GetByteArrayAsync(_fileResource.DownloadUrl); 
       byte[] arrBytes = x.Result; 
       System.IO.File.WriteAllBytes(_saveTo, arrBytes); 
       return true;     
      } 
      catch (Exception e) 
      { 
       Console.WriteLine("An error occurred: " + e.Message); 
       return false; 
      } 
     } 
     else 
     { 
      // The file doesn't have any content stored on Drive. 
      return false; 
     } 
    } 

Code riss von meinem Google drive api C# download Tutorial. Was ich seit Jahren nicht mehr aktualisiert habe, wenn es irgendwelche Probleme gibt, lass es mich wissen und ich werde sie beheben.

+0

Ist es in Ordnung, V3-API-Anrufe mit V2-API-Anrufen zu mischen? – FillyPajo

+0

Nicht wirklich ideal Ich werde versuchen, einige v3-Code zu finden, es sollte sehr ähnlich zu v2 sein. Sorry über meine Lax beim Lesen Ich vergesse immer wieder über die neue API – DaImTo

1

Sie können die Dateinamen aus der Title Eigenschaft in der File Klasse erhalten:

string FileName = service.Files.Get(FileId).Execute().Title; 

und zum Herunterladen,

// DriveService _service: a valid Authendicated DriveService 
// Google.Apis.Drive.v2.Data.File _fileResource: Resource of the file to download. (from service.Files.Get(FileId).Execute();) 
// string _saveTo: Full file path to save the file 

public static void downloadFile(DriveService _service, File _fileResource, string _saveTo) 
{ 
    if (!String.IsNullOrEmpty(_fileResource.DownloadUrl)) 
    { 
     try 
     { 
      var x = _service.HttpClient.GetByteArrayAsync(_fileResource.DownloadUrl); 
      byte[] arrBytes = x.Result; 
      System.IO.File.WriteAllBytes(_saveTo, arrBytes); 
     } 
     catch(Exception e) 
     { 
      MessageBox.Show(e.Message, "Error Occured", MessageBoxButtons.OK, MessageBoxIcon.Error); 
      Environment.Exit(0); 
     } 
    } 
} 
1

Für Google Drive V3:

C#:
string f = driveService.Files.Get(fileId).Execute().Name;

VB

:
Dim f As String = driveService.Files.Get(fileId).Execute().Name