Google Drive API v3 - downloading files in PHP

前端 未结 1 364
盖世英雄少女心
盖世英雄少女心 2021-02-03 11:08

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:

  • Got the file metadata
  • Used the d
1条回答
  •  栀梦
    栀梦 (楼主)
    2021-02-03 11:59

    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"
    
    ?>
    

    0 讨论(0)
提交回复
热议问题