Reputation: 1433
I am trying to list objects in a folder within a Google Cloud Storage bucket. I can get a result with 1000 objects easily (or increase the number if I want) using the following code:
$names = [];
$bucket = $client->bucket('mybucketname');
$options = ['prefix' => 'myfoldername', 'fields' =>' items/name,nextPageToken'];
$objects = $bucket->objects($options);
foreach ($objects as $object) {
$names[] = $object->name();
}
So far so good, but now I want to get the next 1000 objects (or whatever limit I set using maxResults
and resultLimit
) using the fact that I specified the nextPageToken
object. I know that I have to do this by specifying pageToken
as an option - it's just that I have no idea how.
I expect my final code will look something like this - what I need is the line of code which retrieves the next page token.
$names = [];
$bucket = $client->bucket('mybucketname');
$options = ['prefix' => 'myfoldername', 'fields' =>' items/name,nextPageToken'];
while(true) {
$objects = $bucket->objects($options);
foreach ($objects as $object) {
$names[] = $object->name();
}
$nextPageToken = $objects->getNextPageTokenSomehowOrOther(); // @todo Need help here!!!!!!!
if (empty($objects) || empty($nextPageToken)){
break;
}
$options['pageToken'] = $nextPageToken;
}
Any ideas?
Upvotes: 1
Views: 1058
Reputation: 126
The nextPageToken is the name of the last object of the first request encoded in Base64.
Here we have an example from the documentation:
{
"kind": "storage#objects",
"nextPageToken": "CgtzaGliYS0yLmpwZw==",
"items": [
objects Resource
…
]
}
If you decode the value "CgtzaGliYS0yLmpwZw==" this will reveal the value "shiba-2.jpg"
Here we have the definition of PageToken based on API documentation:
The pageToken is an encoded field that marks the name and generation of the last object in the returned list. In a subsequent request using the pageToken, items that come after the pageToken are shown (up to maxResults).
References:
See ya
Upvotes: 1