2012-12-10 3 views
10

Ich versuche, die Google Drive API über ihre PHP-Client-Bibliothek zu verwenden, um eine große Datei hochzuladen. Derzeit schlägt es fehl, weil die einzige scheinbar verfügbare Methode die "einfache" Upload-Methode ist. Leider müssen Sie die gesamte Datei als Daten laden und es trifft mein php Speicherlimit. Ich würde gerne wissen, ob es möglich ist und sehe ein Beispiel dafür, wie es gemacht wird. Ich weiß, dass es eine Methode für fortsetzbare und gechannelte Uploads gibt, aber es gibt keine Dokumentation darüber, wie man sie benutzt.Laden Sie große Datei auf Google Drive mit PHP-Client-Bibliothek

<?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

Large ist ein relativer Begriff. Ist es 10mb? 1GB? 10 GB? –

+0

ist nicht wichtig, um die Frage zu beantworten. Aber eine 10-MB-Datei ist groß genug, um die Lösung zu benötigen ... Eine 5-MB-Datei lässt das "einfache" Hochladen generell fehlschlagen. Ich muss im Allgemeinen Dateien zwischen 50mb und 1GB hochladen. – pathfinder

+3

Ich hatte das gleiche Problem, bis ich den Code für einen mehrteiligen (fortsetzbaren) Upload fand, der auf dieser Antwort gezeigt wird: http://Stackoverflow.com/a/14693917/1060686. Es sollte Ihnen erlauben, große Dateien innerhalb der üblichen Skript-Speicherbeschränkungen hochzuladen (Sie können die gleiche Methode für Downloads verwenden, falls Sie daran interessiert sind. Stellen Sie außerdem sicher, dass Sie die letzte Version der PHP-Client-API verwenden [https: // code.google.com/p/google-api-phph-client/source/checkout] und $ apiConfig ['use_objects'] wird in der config.php auf "false" gesetzt. [1]: [2]: – NotGaeL

Antwort

Verwandte Themen