Ich möchte Dateien auf mein Teamdrive hochladen, aber es schlägt fehl. Upload auf mein Laufwerk funktioniert.Datei auf Teamdrives mit Drive API und PHP hochladen
Ich rufe die Funktion mit einer lokalen Datei, Array mit Ordner-ID in meinem Teamdrive und das Team Laufwerk-ID. $ service ein Google_Service_Drive Objekt und $ client ein Google_Client
Ich benutze die Option supportsTeamDrives.
Wenn ich versuche, der Listfiles Teamdrive auch nicht existieren.
Wie kann ich Teamdrives über die API in PHP zugreifen?
Diese Version funktioniert nun:
function uploadGD($local_file, $folderid = NULL, $teamdrive = NULL)
{
global $service;
global $client;
try {
// Call the API with the media upload, defer so it doesn't immediately return.
$client->setDefer(true);
//$request = $service->files->create($file);
$optParams = array(
'fields' => 'id',
'supportsTeamDrives' => true,
);
$request = $service->files->create(new Google_Service_Drive_DriveFile(array(
"name" => basename($local_file),
"teamDriveId" => $teamdrive,
"parents" => $folderid,
"mimeType" => mime_content_type($local_file))), $optParams);
// Create a media file upload to represent our upload process.
$media = new Google_Http_MediaFileUpload(
$client,
$request,
mime_content_type($local_file),
null,
true,
1 * 1024 * 1024
);
$media->setFileSize(filesize($local_file));
// Upload the various chunks. $status will be false until the process is
// complete.
$status = false;
$handle = fopen($local_file, "rb");
while (!$status && !feof($handle)) {
$chunk = fread($handle, $chunkSizeBytes);
$status = $media->nextChunk($chunk);
}
// The final value of $status will be the data from the API for the object
// that has been uploaded.
$result = false;
if($status != false) {
$result = $status;
}
fclose($handle);
// Reset to the client to execute requests immediately in the future.
$client->setDefer(false);
return "google|" . $result["id"];
} catch (Exception $e) {
return "Fehler:".$e->getMessage();
}
}
Die Fehlermeldung zeigt:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "File not found: 0AHUD0ou-txfUUk9PVA.",
"locationType": "parameter",
"location": "fileId"
}
],
"code": 404,
"message": "File not found: 0AHUD0ou-txfUUk9PVA."
}
}
Danke für Sie Antworten. Der Benutzer hat die Berechtigung für das Team-Laufwerk und die App verwendet Google_Service_Drive :: DRIVE (Vollzugriff) Benötigte ich andere Bereiche für Teamdrives? Der Benutzer hat vollen Zugriff auf die Team-Laufwerk – yannik995
dann machen Sie eine file.list, um zu sehen, auf welche Dateien der Benutzer Zugriff hat. Wenn sie keinen Zugriff auf die fragliche Datei haben, müssen Sie ihnen Zugriff gewähren – DaImTo
Wenn ich $ service-> teamdrives-> listTeamdrives verwende (ich bekomme alle Teamdrives. Ich bin der Ersteller der Teamdrives, also habe ich Fullaccess – yannik995