2016-03-07 22 views
5

Google's page'da verilen örneğe göre, Google Client SDK'yı Composer üzerinden yükledim. Ve aşağıdaki kodları kullanmaya çalışıyorum Google Drive'a yüklemek üzere bir dosya:Tanımsız yöntem Google Drive İstemcisi'ni çağırıyor

<?php 
header('Content-Type: text/plain'); 
require_once('vendor/autoload.php'); 

/** 
* Insert new file. 
* 
* @param Google_Service_Drive $service Drive API service instance. 
* @param string $title Title of the file to insert, including the extension. 
* @param string $description Description of the file to insert. 
* @param string $parentId Parent folder's ID. 
* @param string $mimeType MIME type of the file to insert. 
* @param string $filename Filename of the file to insert. 
* @return Google_Service_Drive_DriveFile The file that was inserted. NULL is 
*  returned if an API error occurred. 
*/ 
function insertFile($service, $title, $description, $parentId, $mimeType, $filename) { 
    $file = new Google_Service_Drive_DriveFile(); 
    $file->setTitle($title); 
    $file->setDescription($description); 
    $file->setMimeType($mimeType); 

    // Set the parent folder. 
    if ($parentId != null) { 
    $parent = new Google_Service_Drive_ParentReference(); 
    $parent->setId($parentId); 
    $file->setParents(array($parent)); 
    } 

    try { 
    $data = file_get_contents($filename); 

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

    // Uncomment the following line to print the File ID 
    print 'File ID: %s' % $createdFile->getId(); 

    return $createdFile; 
    } catch (Exception $e) { 
    print "An error occurred: " . $e->getMessage(); 
    } 
} 

$client_email = '[email protected]'; 
$private_key = file_get_contents('key.p12'); 
$scopes = array(
    'https://www.googleapis.com/auth/drive.file', 
    //'https://www.googleapis.com/auth/drive.appdata', 
    //'https://www.googleapis.com/auth/drive.apps.readonly' 
); 
$credentials = new Google_Auth_AssertionCredentials(
    $client_email, 
    $scopes, 
    $private_key 
); 

$client = new Google_Client(); 
$client->setAssertionCredentials($credentials); 
if ($client->getAuth()->isAccessTokenExpired()) { 
    $client->getAuth()->refreshTokenWithAssertion(); 
} 

$service = new Google_Service_Drive($client); 
// https://developers.google.com/drive/v2/reference/files/insert#examples 
$response = insertFile($service, 'Test Image for OCR', 'Image for OCR', null, 'image/jpeg', 'test1.jpg'); 
if($response === NULL) { 
    echo 'Upload failed' . PHP_EOL; 
} else { 
    var_dump($response); 
} 
?> 

insertFile() işlevi örneği sayfasından kopyalanmış ama Senaryoyu çalıştırdığınızda, bu gösterir:

Fatal error: Call to undefined method Google_Service_Drive_DriveFile::setTitle()

mi kurulum sırasında kaçırdığım bir şey var mı?

Insert() yöntem create() tarafından değiştiriliyor Düzen,

Use create() instead of insert()

Yani temelde yeni kodu (test edilmemiş olacaktır $file->setName($filename); yerine $file->setTitle($title); kullanımını kullanmanın

cevap

7

),

$createdFile = $service->files->create($file, array(
     'data' => $data, 
     'mimeType' => $mimeType, 
    )); 
+0

Örneğin güncellenmediğini/kütüphanenin güncellendiğini mi söylüyorsunuz? Güncellenmiş örneği nerede bulabilirim? Çalışıyor, ancak bir sonraki hata ortaya çıkıyor: ' Önemli hata: Tanımlanmamış yönteme çağrı Google_Service_Drive_Files_Resource :: insert()' satırında '$ createdFile = $ service-> files-> insert()' – Raptor

+1

Insert() mehod ile değiştiriliyor. create(), burada bulabilirsiniz https://developers.google.com/drive/v3/reference/files/create#request –

+0

Çekicilik gibi çalışır. Teşekkürler dostum. – Raptor