2012-12-10 16 views
10

Büyük bir dosya yüklemek için Google Drive API'sını PHP İstemci Kütüphanesi aracılığıyla kullanmaya çalışıyorum. Şu anda başarısız oluyor çünkü görünen tek yöntem "basit" yükleme yöntemidir. Maalesef bu, tüm dosyayı veri olarak yüklemenizi ve php bellek sınırına ulaşmanızı gerektirir. Mümkün olup olmadığını bilmek ve nasıl yapıldığına dair bir örnek görmek istiyorum. Resumable ve chuncked uploads için bir yöntem olduğunu biliyorum, ancak nasıl kullanılacağına dair bir belge yok.Büyük dosyayı PHP İstemcisi Kitaplığı ile google sürücüye yükleyin

<?php 
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('YOUR_CLIENT_ID'); 
$client->setClientSecret('YOUR_CLIENT_SECRET'); 
$client->setRedirectUri('urn:ietf:wg:oauth:2.0:oob'); 
$client->setScopes(array('https://www.googleapis.com/auth/drive')); 

$service = new Google_DriveService($client); 

$authUrl = $client->createAuthUrl(); 

//Request authorization 
print "Please visit:\n$authUrl\n\n"; 
print "Please enter the auth code:\n"; 
$authCode = trim(fgets(STDIN)); 

// Exchange authorization code for access token 
$accessToken = $client->authenticate($authCode); 
$client->setAccessToken($accessToken); 

//Insert a file 
$file = new Google_DriveFile(); 
$file->setTitle('My document'); 
$file->setDescription('A test document'); 
$file->setMimeType('text/plain'); 

$data = file_get_contents('document.txt'); 

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

print_r($createdFile); 
?> 
+0

Büyük göreceli bir terimdir. 10mb mi? 1GB? 10gb? –

+0

'un soruyu cevaplaması önemli değil. Ancak 10mb'lik bir dosya, çözüme ihtiyaç duyacak kadar büyüktür ... 5MB genellikle "basit" yüklemeyi başarısız yapar. Genelde 50mb ve 1gb arasında dosya yüklemeye ihtiyacım var. – pathfinder

+3

Bu yanıtta gösterilen çok parçalı (yeniden yüklenebilen) bir yükleme kodunu bulana kadar aynı sorunu yaşadım: http://stackoverflow.com/a/14693917/1060686. Her zamanki komut dosyası bellek kısıtlamaları içinde büyük dosyalar yüklemenize izin vermelisiniz (İlgilendiğinizde, indirmeler için aynı yöntemi kullanabilirsiniz. Ayrıca, php client API'nın son sürümünü kullandığınızdan emin olun [https: // code.google.com/p/google-api-php-client/source/checkout] ve $ apiConfig [ 'use_objects']) config.php yanlış olarak ayarlanır [1]: [2]: – NotGaeL

cevap

İlgili konular