Intereting Posts
получение ip-адреса с использованием PHP в случае, если вы используете VPN Поиск многомерного массива в PHP и возвращаемые ключи Как анализировать HTML-таблицу с помощью PHP? Как кэшировать / сохранять внешние API Как увеличить время истечения срока действия сеанса в режиме cakephp Auth Сортировка массива по ключам на основе другого массива? Как сохранить значения формы после сообщения PHP.ini вызывает Предупреждение: mysqli_error () ожидает, что параметр 1 будет mysqli, null указан в / sys / index.php в строке 19 Запрос на отношения «многие-ко-многим» с использованием Доктрины с Symfony2 PHP не работает chmod? Прокрутка по свойствам объекта PHP – Амперсанд перед переменной в цикле foreach Почему PHP создает новый экземпляр singleton каждый раз, когда запускается скрипт, вызывающий Foo :: getInstance ()? Таблица Sql импортирует только первый столбец Преобразование всех HTML-тегов в нижний регистр.

Google Диска V3, клиент API Google 2.0 2.0 – пакетная загрузка не работает

Пакетная загрузка не выполняется с помощью Google Диска V3 с главной ветвью API (v2.0).

Я изменил https://github.com/google/google-api-php-client/blob/master/examples/batch.php учетные данные учетной записи службы.

Код:

include_once __DIR__ . '/../vendor/autoload.php'; include_once "templates/base.php"; echo pageHeader("Batching Queries"); // USE TRUE OR FALSE TO TOGGLE BETWEEN BATCHED AND SEQUENTIAL UPLOADS. $useBatch = true; $client = new Google_Client(); $client->setScopes([ 'https://www.googleapis.com/auth/drive', ]); if ($credentials_file = checkServiceAccountCredentialsFile()) { // set the location manually $client->setAuthConfig($credentials_file); } elseif (getenv('GOOGLE_APPLICATION_CREDENTIALS')) { // use the application default credentials $client->useApplicationDefaultCredentials(); } else { exit; } $client->setSubject('some@email.com'); $service = new Google_Service_Drive($client); $client->setUseBatch($useBatch); if ($useBatch) { $batch = $service->createBatch(); } $folder = new Google_Service_Drive_DriveFile([ 'name' => 'Invoices', 'mimeType' => 'application/vnd.google-apps.folder' ]); $req = $service->files->create($folder, [ 'fields' => 'id' ]); if ($useBatch) { $result = $batch->add($req, 'newfolder'); $folder = $batch->execute()['response-newfolder']; $newFolderId = $folder->id; } else { $newFolderId = $req->id; } $uploadIDs = null; if ($useBatch) { $batch = $service->createBatch(); } for ($i=1;$i<=3;$i++) { $file = new Google_Service_Drive_DriveFile([ 'name' => $i . '.jpg', 'mimeType' => 'image/jpeg', 'parents' => [$newFolderId], ]); $req = $service->files->create($file, [ 'data' => file_get_contents('img/'.$i.'.jpg'), 'mimeType' => 'image/jpeg', 'uploadType' => 'media', 'fields' => 'id', ]); if ($useBatch) { $batch->add($req, $i); } else { $uploadIDs[] = $req->id; } } if ($useBatch) { $results = $batch->execute(); } else { print_r($uploadIDs); } 

При выполнении последнего $ result = $ batch-> execute () код выше завершится с «Not Found». (папка Invoices будет создана успешно).

С $useBatch = false все работает так, как ожидалось – папка создается с тремя файлами в ней.

Почему это происходит при пакетной загрузке?

Благодаря!

Solutions Collecting From Web of "Google Диска V3, клиент API Google 2.0 2.0 – пакетная загрузка не работает"

Основываясь на официальной документации Google , вы получили « 404 файл не найден » из-за того, что пользователь не имеет доступа для чтения к файлу или файл не существует. Предлагаемое действие: сообщите пользователям, что у них нет доступа для чтения к файлу или что файл не существует. Скажите им, что они должны попросить владельца разрешения на файл.

Вы должны включить свой файл $ fileId в свой запрос . Кроме того, вы должны установить ' $ userPermission ', если ' $ useBatch = true '.

Примечание. Вы должны использовать ветвь v1, как указано здесь: https://github.com/google/google-api-php-client