Próbuję użyć interfejsu API Dysku Google za pośrednictwem ich biblioteki klienta PHP, aby przesłać duży plik. Obecnie nie działa, ponieważ jedyną dostępną metodą jest "prosta" metoda przesyłania. Niestety to wymaga, aby załadować cały plik jako dane i osiągnie mój limit pamięci php. Chciałbym wiedzieć, czy jest to możliwe i zobaczyć przykład, jak to się robi. Wiem, że istnieje metoda na wznawianie i wysyłanie plików, ale nie ma dokumentacji, jak jej używać.Prześlij duży plik na dysk google z biblioteką klienta PHP
<?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);
?>
Duży jest pojęciem względnym. Czy to 10mb? 1 gb? 10 gb? –
nie ma znaczenia, aby odpowiedzieć na pytanie. Ale plik o wielkości 10 MB jest wystarczająco duży, by potrzebować rozwiązania ... A 5 MB zazwyczaj powoduje, że "proste" przesyłanie nie udaje się. Potrzebuję ogólnie przesyłać pliki między 50 MB a 1 GB. – pathfinder
Miałem ten sam problem, dopóki nie znalazłem kodu do wieloczęściowego (wznawianie) przesyłania, pokazane w tej odpowiedzi: http://stackoverflow.com/a/14693917/1060686. Powinno to pozwolić na przesyłanie dużych plików w ramach zwykłych ograniczeń pamięci skryptów (możesz użyć tej samej metody pobierania, na wypadek gdybyś był zainteresowany.) Upewnij się też, że używasz ostatniej wersji interfejsu API klienta PHP [https: // code.google.com/p/google-api-php-client/source/checkout] i $ apiConfig ['use_objects'] jest ustawione na false w config.php) [1]: [2]: – NotGaeL