2017-10-17 22 views
0

Ich bin mir bewusst, dass es Hunderte von Posts zu Variationen dieses Themas gibt, und ich habe die letzten Stunden damit verbracht, sie durchzulesen, aber ich kann das einfach nicht verstehen Arbeit.Hochladen von Dateien in mein Google Drive-Konto mit PHP

Ich möchte Dateien von meinem Server über mein Google Drive-Konto auf mein Google Drive-Konto hochladen. Dazu verwende ich das Google Drive SDK (ich verwende v2.2.0).

Das Skript läuft gut, es scheint irgendwo hochzuladen und gibt sogar eine Datei-ID zurück (immer die gleiche), aber es wird nicht in meinem Google Drive angezeigt und ich erhalte die folgende Meldung, wenn ich die Datei anschaue :

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "notFound", 
    "message": "File not found: <FILE_ID>.", 
    "locationType": "parameter", 
    "location": "fileId" 
    } 
    ], 
    "code": 404, 
    "message": "File not found: <FILE_ID>." 
} 
} 

Ich habe ein Dienstkonto eingerichtet und die JSON-Anmeldeinformationen heruntergeladen. Mein Ziel ist es, eine Funktion zum Hochladen von Dateien zu erstellen, die auf meinem Server gespeichert sind. Daher benötige ich keinen oAuth-Zustimmungsbildschirm.

Hier ist der Test-Code bisher:

<?php 

    include_once __DIR__ . '/vendor/autoload.php'; 

    putenv('GOOGLE_APPLICATION_CREDENTIALS=../../../keys/MyProject-xxxxxxxxxxxx.json'); 

    $client = new Google_Client(); 
    $client->addScope(Google_Service_Drive::DRIVE); 
    $client->useApplicationDefaultCredentials(); 
    $client->setApplicationName("MyApplication"); 
    $client->setScopes(['https://www.googleapis.com/auth/drive.file']); 

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

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

    $service = new Google_Service_Drive($client); 

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

    echo("<a href='https://www.googleapis.com/drive/v3/files/".$createdFile->id."?key=<MY_API_KEY>&alt=media' target='_blank'>Download</a>"); 

Antwort

1

gelöst!

Sie müssen einen Ordner in Google Drive erstellen und dann die E-Mail-Adresse des Dienstkontos zur Liste der Personen hinzufügen, die & bearbeiten können.

Dann müssen Sie die Ordner-ID in Ihrem Code angeben:

$file->setParents(array("0B_xxxxxxxxxxxxxxxxxxxxxxxxx")); 
Verwandte Themen