Below code will help to upload image directly to your google drive
private void saveFileToDrive() { final Bitmap image = mBitmapToSave; Drive.DriveApi.newDriveContents(getGoogleApiClient()) .setResultCallback(new ResultCallback<DriveApi.DriveContentsResult>() { @Override public void onResult(DriveApi.DriveContentsResult result) { if (!result.getStatus().isSuccess()) { Log.i("ERROR", "Failed to create new contents."); return; } final DriveContents driveContents = result.getDriveContents(); new Thread() { @Override public void run() { // write content to DriveContents OutputStream outputStream = driveContents.getOutputStream(); // Write the bitmap data from it. ByteArrayOutputStream bitmapStream = new ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat.PNG, 100, bitmapStream); try { outputStream.write(bitmapStream.toByteArray()); } catch (IOException e1) { Log.i("ERROR", "Unable to write file contents."); } // Create the initial metadata - MIME type and title. // Note that the user will be able to change the title later. MetadataChangeSet metadataChangeSet = new MetadataChangeSet.Builder() .setMimeType("image/jpeg").setTitle("Android Photo.png").build(); // Create an intent for the file chooser, and start it. IntentSender intentSender = Drive.DriveApi .newCreateFileActivityBuilder() .setInitialMetadata(metadataChangeSet) .setInitialDriveContents(driveContents) .build(getGoogleApiClient()); try { startIntentSenderForResult( intentSender, REQUEST_CODE_CREATOR, null, 0, 0, 0); } catch (IntentSender.SendIntentException e) { Log.i("ERROR", "Failed to launch file chooser."); } } }.start(); } }); }