В доступе к загрузке с Google Cloud Storage отказано - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь получить объекты в моем хранилище в Google Cloud Storage.Для этого я использую рекомендованный Google код на своих страницах API:

https://cloud.google.com/storage/docs/downloading-objects#storage-download-object-php

Но когда я это получаю, я получаю сообщение об ошибке отказа в разрешении.

Я настроилComposer с разрешением (например, мой код для перечисления объектов в корзине работает нормально), но я не могу ничего скачать.Я получаю эту ошибку:

Предупреждение: fopen (C: \ wamp64 \ www \ test): не удалось открыть поток: в C: \ wamp64 \ www \ test \ vendor \ google \ cloud-storage \ отказаноsrc \ StorageObject.php в строке 602

Я дал себе все разрешения в консоли Cloud Storage, но ошибка все еще появляется.

Мне также стало интересно, возможно ли получить / скопировать содержимое объекта, не загружая его?

Спасибо за вашу помощь!

РЕДАКТИРОВАТЬ: код довольно прост:

$storage = new StorageClient($config = [ 
    'keyFilePath' => "[PATH OF MY KEYFILE]",
    'projectId' => $projectId
]);
$bucket = $storage->bucket($bucketName);
$object = $bucket->object($objectName);
$object->downloadToFile($destination);
printf('Downloaded gs://%s/%s to %s' . PHP_EOL,
    $bucketName, $objectName, basename($destination));

}

В хранилище у меня просто ведра ссписок объектов и мне нужно получить содержимое / dl одного из них, чтобы объединить его с другим Json

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

[РЕШЕНИЕ] Я не могу загрузить объект за пределы папки, в которой находится код PHP.Пункт назначения должен быть DIR .'/my-file.json'

Спасибо всем

0 голосов
/ 11 июня 2019

Чтобы сделать отдельные объекты общедоступными для чтения:

https://cloud.google.com/storage/docs/access-control/making-data-public

Проверьте следующий код:

Функция download_object ($ bucketName, $ objectName, $ destination)

{

$storage = new StorageClient();

$bucket = $storage->bucket($bucketName);

$object = $bucket->object($objectName);

$object->downloadToFile($destination);

printf('Downloaded gs://%s/%s to %s' . PHP_EOL,
    $bucketName, $objectName, basename($destination));

}

...