Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Upload a PDF file to Google Drive
require 'google-api/apiClient.php';
require 'google-api/contrib/apiOauth2Service.php';
require 'google-api/contrib/apiDriveService.php';
$pdfFile = 'test.pdf';
// API Console:
// Create an API project ("web applications") and put the client id and client secret in config.ini.
// Set up the Drive SDK in the API console.
// Create a Chrome extension, set the "container" and "api_console_project_id" parameters, and install it.
$config = parse_ini_file('config.ini'); // client_id, client_secret
// initialise the client
$client = new apiClient();
// initialise the Google Drive service
$service = new apiDriveService($client);
// create and upload a new Google Drive file, including the data
try {
$file = new DriveFile;
$result = $service->files->insert($file, array('data' => file_get_contents($pdfFile), 'mimeType' => 'application/pdf'));
catch (Exception $e) {
print $e->getMessage();
function authenticate($client, $file = 'token.json'){
if (file_exists($file)) return file_get_contents($file);
$_GET['code'] = ''; // insert the verification code here
// print the authentication URL
if (!$_GET['code']) {
exit($client->createAuthUrl(array('')) . "\n");
file_put_contents($file, $client->authenticate());
exit('Authentication saved to token.json - now run this script again.');

Hi, I really appreciate your efforts for providing this code snippet,but can you please also send the download link to the complete api?

joshiket commented Feb 6, 2016

I am getting Undefined index: uploadType in Google\Service\Resource.php on line 221 exception, when I call the $service->files->insert() method, I have passed all the parameters as shown in the above code.
earlier I was using $service->files->insert($file, array('data' => $data, 'mimeType' => 'image/jpeg'));
changed it to $service->files->insert($file, array('data' => $data, 'mimeType' => 'image/jpeg','uploadType' => 'media'));

@joshiket To solve the warning, you should specify uploadType along with mimeType.
p.s. this piece of code is for V2; please migrate to V3.

can you please update the topic

Hi, I need to setup Google Drive API for one of my project and following the documentation leads me nowhere. The API which I am getting do not have files which are included in the code. Can anyone guide me with the code and API as I am new to APIs.

I need to create a system wherein public users will submit their assignments by uploading Word/PDF files which will be transferred to common Google Drive of teacher and link of each uploaded file will be generated.

Please suggest. Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment