Как я могу получить URL-адрес загрузки из файла на диске Google с php? - PullRequest
0 голосов
/ 06 ноября 2019

Я следовал этому руководству:

https://developers.google.com/drive/api/v3/quickstart/php?authuser=1

Теперь я хочу получить ссылку на загрузку из файла. Я пытаюсь использовать $ file-> getDownloadUrl (), но получаю следующую ошибку:

Fatal error: Uncaught Error: Call to undefined method Google_Service_Drive_DriveFile::getDownloadUrl() in C:\xampp\htdocs\Prueba\quickstart.php:84
Stack trace:
#0 {main}
  thrown in C:\xampp\htdocs\Prueba\quickstart.php on line 84

Это мой код:

// Get the API client and construct the service object.
$client = getClient();
$service = new Google_Service_Drive($client);

// Print the names and IDs for up to 10 files.
$optParams = array(
  'pageSize' => 1,
  'fields' => 'nextPageToken, files(id, name)'
);
$results = $service->files->listFiles($optParams);

if (count($results->getFiles()) == 0) {
    print "No files found.\n";
} else {
    print "Files:\n";
    foreach ($results->getFiles() as $file) {

        printf("%s (%s)\n", $file->getName(), $file->getId());
        print($file->getDownloadUrl());
    }
}

Кстати, у клиента есть авторизациядля загрузки файлов, потому что я определил это так:

$client->setScopes(Google_Service_Drive::DRIVE_READONLY);

РЕДАКТИРОВАТЬ:

Наконец, я смог загрузить файлы PDF со следующим кодом:

// Get the API client and construct the service object.
$client = getClient();
$service = new Google_Service_Drive($client);

// Print the names and IDs for up to 3 files.
$optParams = array(
  'pageSize' => 3,
  'fields' => 'nextPageToken, files(id, name)'
);
$results = $service->files->listFiles($optParams);

if (count($results->getFiles()) == 0) {
    print "No files found.\n";
} else {
    print "Files:\n";
    foreach ($results->getFiles() as $file) {

        printf("%s (%s)\n", $file->getName(), $file->getId());
        $fileId = $file->getId();
        $fileToDown = $service->files->get($fileId, array('alt' => 'media'));
        file_put_contents($file->getName(),$fileToDown->getBody());
    }
}

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Вы используете метод, который не существует.

Проверьте здесь для обзора доступных методов. Вы хотите использовать метод getWebContentLink().

В соответствии с объявлением webContentLink теперь позволяет получать ссылки для загрузки файлов. с диска.

0 голосов
/ 06 ноября 2019

Метод getDownloadUrl () не существует. Попробуйте:

$file->downloadUrl;
...