2013-08-21 9 views
7

파일 업로드를 위해 Google 드라이브 API를 사용하고 있습니다. 이것은 내 코드 에 지금까지 내 코드이며 지금 다른 폴더로 경로를 변경하고 싶습니다.PHP를 사용하여 Google 드라이브 API를 사용하여 특정 폴더에 파일 업로드

<?php 
     error_reporting(E_ALL); 
     ini_set('display_errors', 1); 
     require_once 'google-api-php-client/src/Google_Client.php'; 
     require_once 'google-api-php-client/src/contrib/Google_DriveService.php'; 
     $client = new Google_Client(); 
     // Get your credentials from the APIs Console 
     $client->setClientId('***'); 
     $client->setClientSecret('***'); 
     $client->setRedirectUri('http://***'); 
     $client->setScopes(array('https://www.googleapis.com/auth/drive')); 

     if(empty($_GET['code'])) 
     { 
      $client->authenticate(); 
     } 

     $myfile= "video.mp4"; 
     $type='video/mp4'; 

     $service = new Google_DriveService($client); 

     // Exchange authorization code for access token 
     $accessToken = $client->authenticate($_GET['code']); 
     $client->setAccessToken($accessToken); 


     //Insert a file 

     $file = new Google_DriveFile(); 
     $file->setTitle('filename.mp4'); 
     $file->setDescription('A video'); 
     $file->setMimeType($type); 

     $data = file_get_contents($myfile); 

     $createdFile = $service->files->insert($file, array(
       'data' => $data, 
       'mimeType' => $type, 
      )); 

     print_r($createdFile); 
     echo "<br />"; 

I에 유래 에서 몇 게시물을 시도하고 그들 중 누구도 내가 일을해야 부모 ID의 목록을 설정, 사전

답변

4

이 같은 상위 폴더 설정 :

//Set the Parent Folder 
$parent = new Google_Service_Drive_ParentReference(); //previously Google_ParentReference 
$parent->setId('0B9mYBlahBlahBlah'); 
$file->setParents(array($parent)); 
+0

새 클래스는 'Google_Service_Drive_ParentReference'라고합니다. – Moak

0

는 아래의 코드를 사용합니다. Google 드라이브에 파일을 삽입하는 데 완벽하게 작동합니다.

<?php 
require_once 'Google/autoload.php'; 
require_once 'Google/Client.php'; 
require_once 'Google/Service/Drive.php'; 

$client = new Google_Client(); 
// Get your credentials from the console 
$client->setClientId('your client id'); 
$client->setClientSecret('your client secret'); 
$client->setRedirectUri('redirect uri set on google apps'); 
$client->setScopes(array('https://www.googleapis.com/auth/drive.file')); 

session_start(); 

if (isset($_GET['code']) || (isset($_SESSION['access_token']) && $_SESSION['access_token'])) { 

    if (isset($_GET['code'])) { 
     $client->authenticate($_GET['code']); 
     $_SESSION['access_token'] = $client->getAccessToken(); 
    } 
    else 
     $client->setAccessToken($_SESSION['access_token']); 

    $service = new Google_Service_Drive($client); 

    //Insert a file 
    $file = new Google_Service_Drive_DriveFile(); 
    $file->setTitle(uniqid().'.jpg'); 
    $file->setDescription('A test document'); 
    $file->setMimeType('image/jpeg'); 

    $data = file_get_contents('a.jpg'); 

    $createdFile = $service->files->insert($file, array(
     'data' => $data, 
     'mimeType' => 'image/jpeg', 
     'uploadType' => 'multipart' 
    )); 

    print_r($createdFile); 
} 
else { 
    $authUrl = $client->createAuthUrl(); 
    header('Location: ' . $authUrl); 
    exit(); 
} 
?> 
2

클래스 Google_Service_Drive_ParentReference()이 더 이상 작동하지 않는 것으로 보입니다. 그러나 다음 코드는 나를 위해 작동합니다 :

$fileMetadata = new Google_Service_Drive_DriveFile(array(
     //Set the Random Filename 
     'name' => $rdmName, 
     //Set the Parent Folder 
     'parents' => array('0BzaRxkCDivjIM1pUYU1SLWVxOGM') // this is the folder id 
    )); 

    try{ 

     $newFile = $drive_service->files->create(
      $fileMetadata, 
      array(
       'data' => file_get_contents(TESTFILE), 
       'mimeType' => 'application/pdf', 
       'uploadType' => 'media' 
      ) 
     ); 


    } catch(Exception $e){ 

     echo 'An error ocurred : ' . $e->getMessage(); 

    } 
관련 문제