Google Drive API v3 - herunterladen von Dateien in PHP
Ich versuche zu verstehen, den download-flow für die Google Drive API v3 mit PHP. Mit der API v2 zum download einer Datei, die ich:
- Die Datei-Metadaten
- Verwendet die downloadUrl-parameter, um einen direkten link zu der Datei, mit einem oAuth-token zu und machte eine GET-Anfrage zu, dass.
Mithilfe der API v3 zu haben scheint veraltet, und nach der docs rufen Sie files->get()
auf das Laufwerk mit einem array-parameter von "alt" => "media"
um die Datei selbst, anstatt die Metadaten.
Und Ihrem Beispiel:
$fileId = '0BwwA4oUTeiV1UVNwOHItT0xfa2M';
$content = $driveService->files->get($fileId, array(
'alt' => 'media' ));
Ich habe Schwierigkeiten zu verstehen, wie dies funktioniert, obwohl und haben zudem durch den code, aber es gab nicht viel mehr info.
Beim Aufruf get()
, was geht eigentlich in $content
im Beispiel? Ist es der Inhalt der Datei (in dem Fall dies scheint lästig beim Umgang mit großen Dateien - sicherlich werden Sie get out of memory?!) oder ist es irgendeine Art von stream-Referenz, die ich anrufen kann fopen
auf? Wie würde ich diese Datei speichern auf der Festplatte?
In der Dokumentation nicht wirklich ins detail über das, was passiert, wenn Sie, dass API-Aufruf, es nur sagt, es führt eine Datei herunterladen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es herausgefunden nach ein bisschen Experimentieren.
Beim Aufruf der
get()
Methode mit deralt=>media
parameter wie angegeben in der Dokumentation erhalten Sie die zugrunde liegenden HTTP-Antwort, die eine Saufen response-Objekt (da anscheinend die client-Bibliothek verwendet, Saufen für die zugrunde liegenden transport).Von dort aus können Sie aufrufen, Saufen, response-Methode wie
$response->getStatusCode()
oder Sie können einen stream von dem tatsächlichen Inhalt der Datei.Hilfreich gewesen wäre, wenn Sie hatte dies irgendwo dokumentiert!
EDIT: Hier ein einfaches Beispiel, wenn jemand stecken bleibt, wie eine Datei zu speichern.