2017-09-20 3 views
0

Je passe à l'API Google V3 et je ne suis pas en mesure de récupérer le flux vers le document. Objectif: Je souhaite transférer un document de Google Drive à un autre emplacement et j'ai besoin de récupérer le flux du fichier afin de l'utiliser pour le pousser vers la cible.exportlink pour Google lecteur api v3

Je n'arrive pas à trouver un moyen de le faire en utilisant Google Drive API V3!

En V2, j'ai utilisé:

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

Et puis je pourrais utiliser quelque chose comme:

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

Je ne trouve pas l'équivalent en V3. Je essayé:

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

Et le contenu du flux est:

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

Bien sûr, nous ne voulons pas le télécharger dans un fichier local, puis générer un nouveau flux à partir du fichier mis en cache localement. Nous voulons rester entièrement en mémoire.

Merci pour votre aide

+0

aura-t-il fonctionner si vous utilisez 'downloadURL = « https://drive.google.com/uc?id="+ fileId + "& authuser = 0 & export = download'? – Morfinismo

+0

Cette information vous est-elle utile? https://stackoverflow.com/questions/46302540/google-drive-export-non- google-doc-file/46310449 # 46310449 – Tanaike

+0

c'est C# pas java.J'ai utilisé .Télécharger à la place.Il a retourné un flux mais le fichier a été entièrement chargé dans la mémoire qui est mauvais.Google.Apis.Drive.v3.FilesResource. GetRequest getfile = _s ervice.Files.Get (fichier.Id); var flux = new MemoryStream(); getfile.Download (stream); flux.Position = 0; retour courant; – CloudAnywhere

Répondre

0

Vous pouvez voir que dans les Migrate to Drive v3 docs, il est dit que:

Le champ exportLinks a été supprimé des fichiers. Pour exporter les documents Google , utilisez plutôt la méthode files.export .

Vérifiez également cette page pour les autres modifications dans v3.

+0

files.export ne fonctionne pas. Voir mon message initial, c'est ce que j'ai essayé. Je veux être en mesure d'obtenir un flux vers n'importe quel type de fichier. – CloudAnywhere

+0

Essayer d'exporter un google doc natif en utilisant un fichier.l'exportation, je reçois systématiquement { "erreur": { "erreurs": [{ "domaine": "global", "raison": "BadRequest", "message": « La conversion est non pris en charge ", "locationType.": "paramètre", "emplacement": "convertTo" } ], "code": 400, "message": "La conversion demandée est pas pris en charge". } } ces nouvelles apis me conduisent crasy! – CloudAnywhere

0

Vous pouvez également créer un lien vous-même si vous êtes connecté en tant qu'utilisateur droit ou le fichier est public un lien:

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