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
Wird es funktionieren, wenn Sie 'downloadURL =„https://drive.google.com/uc?id="+ fileId + "& authuser = 0 & export = download'? – Morfinismo
Sind diese Informationen nützlich für Sie? https://stackoverflow.com/questions/46302540/google-drive-export-non- google-doc-file/46310449 # 46310449 – Tanaike
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