I\'m trying to understand the download flow for the Google Drive API v3 using PHP. Using the API v2 to download a file I:
I figured it out after a bit of experimenting.
When you call the get()
method with the alt=>media
parameter as specified in the docs you get the underlying HTTP response which is a Guzzle response object (as apparently the client library uses Guzzle for it's underlying transport).
From there you can call any Guzzle response method such as $response->getStatusCode()
or you can get a stream of the actual file content.
Would have been helpful if they had documented this somewhere!
EDIT: Here's a rough example if anyone else gets stuck of how to save a file.
addScope(Google_Service_Drive::DRIVE);
$client->useApplicationDefaultCredentials();
$service = new Google_Service_Drive($client);
$fileId = "0Bxxxxxxxxxxxxxxxxxxxx"; // Google File ID
$content = $service->files->get($fileId, array("alt" => "media"));
// Open file handle for output.
$outHandle = fopen("/path/to/destination", "w+");
// Until we have reached the EOF, read 1024 bytes at a time and write to the output file handle.
while (!$content->getBody()->eof()) {
fwrite($outHandle, $content->getBody()->read(1024));
}
// Close output file handle.
fclose($outHandle);
echo "Done.\n"
?>