2017-09-20 4 views
0

Ich bin auf die Google Drive V3 API wechseln und ich bin nicht in der Lage, den Stream auf das Dokument zu erhalten.exportlink für Google drive api v3

Ziel: Ich möchte ein Google-Laufwerk Dokument an einen anderen Speicherort verschieben und ich muss den Strom der Datei abrufen, um es zu verwenden, um es zum Ziel zu schieben.

Ich kann keinen Weg finden, es mit Google Drive API V3 zu tun!

In V2, habe ich:

downloadUrl = file.ExportLinks[(string)ExportTable[file.MimeType]]; 

Und dann konnte ich so etwas wie verwenden:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(downloadUrl)); 

Ich habe nicht das Äquivalent in V3 finden. Ich habe versucht:

var getfile = _service.Files.Get(file.Id).Execute(); 
var request = _service.Files.Export(file.Id, getfile.MimeType); 
System.IO.Stream stream = request.ExecuteAsStream(); 

Und der Inhalt des Stroms ist:

{ 
"error": { 
"errors": [ 
{ 
"domain": "global", 
"reason": "fileNotExportable", 
"message": "Export only supports Google Docs." 
} ], 
"code": 403, 
"message": "Export only supports Google Docs." 
} 
} 

Natürlich wollen wir nicht, dass es zu einer lokalen Datei herunterladen und dann einen neuen Stream aus der Datei erzeugen lokal zwischengespeichert. Wir wollen ganz in Erinnerung bleiben.

Danke für Ihre Hilfe

+0

Wird es funktionieren, wenn Sie 'downloadURL =„https://drive.google.com/uc?id="+ fileId + "& authuser = 0 & export = download'? – Morfinismo

+0

Sind diese Informationen nützlich für Sie? https://stackoverflow.com/questions/46302540/google-drive-export-non- google-doc-file/46310449 # 46310449 – Tanaike

+0

dies ist C# nicht java. Ich habe .Download stattdessen.Es hat einen Stream zurückgegeben, aber die Datei wurde vollständig in den Speicher geladen, die schlecht ist.Google.Apis.Drive.v3.FilesResource. GetRequest getfile = _s ervice.Files.Get (Datei.Id); var stream = neuer MemoryStream(); getfile.Download (Stream); stream.Position = 0; Rückstrom; – CloudAnywhere

Antwort

0

Sie, dass in den Migrate to Drive v3 docs sehen können, heißt es, dass:

Die exportLinks Feld von Dateien entfernt wurde. Um Google Dokumente zu exportieren, verwenden Sie stattdessen die Methode files.export .

Überprüfen Sie diese Seite für andere Änderungen in v3 sowie.

+0

files.export funktioniert nicht. Siehe meinen ersten Beitrag, das habe ich ausprobiert. Ich möchte in der Lage sein, einen Stream zu jeder Art von Datei zu bekommen. – CloudAnywhere

+0

Der Versuch, ein natives Google-Dokument mithilfe der Datei zu exportieren.Export, ich bin immer systematisch { "Fehler": { "Fehler": [{ "domain": "global", "Grund": "BadRequest", "message": „Die angeforderte Konvertierung nicht unterstützt ", "location.": "Parameter", "Standort": "convertTo" } ], "Code": 400, "message": " Die gewünschte Konvertierung wird nicht unterstützt" } } diese neuen apis fahren mich crasy! – CloudAnywhere

0

Sie können auch einen Link selbst erstellen, wenn Sie als der richtige Benutzer angemeldet sind oder die Datei mit einem Link öffentlich ist:

https://docs.google.com/feeds/download/documents/export/Export?id={{ID}}&exportFormat=pdf

Verwandte Themen