2014-05-04 16 views
6

So hatte ich seltsame Probleme mit PHP-Upload mit GAPI. Die Datei wird tatsächlich auf dem Laufwerk erstellt, aber aus irgendeinem Grund gelangen die Daten nicht zu Google und es wird nur eine Datei mit 0 Byte erstellt.Google Drive PHP API leer hochgeladene Datei

Hier ist mein Code:

function uploadFile($service, $title, $description, $parentId, $mimeType, $filepath) { 
    $mimeType = "image/png"; 
    $title = "test.png"; 
    $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(); 

     $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) { 
     echo "An error occurred: " . $e->getMessage(); 
    } 
} 

Alles authentifiziert ist, damit ich das ist nicht das Problem kennen. Wenn ich Ausgabe, $ data ich das Chaos von Mist, die Sie in der Regel erhalten, wenn eine Datei ziehen, damit ich weiß, das ist nicht das Problem .. Alle der Bereiche sollten richtig sein, aber hier sind sie sowieso:

$client->addScope("https://www.googleapis.com/auth/drive"); 
$client->addScope("https://www.googleapis.com/auth/drive.file"); 
$client->addScope("https://www.googleapis.com/auth/drive.appdata"); 
$client->addScope("https://www.googleapis.com/auth/drive.scripts"); 
$client->addScope("https://www.googleapis.com/auth/drive.apps.readonly"); 
$client->addScope("https://www.googleapis.com/auth/drive.metadata.readonly"); 
$client->addScope("https://www.googleapis.com/auth/drive.readonly"); 

Nein Dokumentation kann ich zu diesem Problem finden, damit jede Hilfe wirklich geschätzt wird!

Antwort

6

Ich konnte dies herausfinden und wollte dies für jeden anderen, der dieses Problem haben könnte, verlassen. Hat den Quellcode durchsucht und eine If-Anweisung bemerkt, die nicht ausgelöst wurde.

ändern

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

Um

$createdFile = $service->files->insert($file, array(
    'data' => $data, 
    'mimeType' => $mimeType, 
    'uploadType' => 'media' //add this for pdfs to work 
)); 

Es ist nur so einfach! Hasse es wenn es so einfach ist ..

+1

das wichtigste ist der 'uploadType' => 'media' –

+1

Hallelujah! Das Problem, mit der quickstart.php zu beginnen und direkt in Schreiboperationen zu springen - sie haben dich nicht dafür eingerichtet, nein, haben sie nicht. Lass dich nach den zerstörerischen Kräften jagen, was wahrscheinlich eine gute Idee ist :) –