Zend Framework 101: Zend_Service_Amazon_S3
Listing Objects
You can retrieve a list of objects in your bucket using the
getObjectsByBucket()
method. This method accepts as its first argument the name of the bucket and optionally accepts an array of parameters as its second argument.
The parameters allow you to paginate results, but for now we'll just look at the
prefix
parameter. Specifying this parameter allows you to retrieve all objects that begin with a certain name. If you look at objects having a filesystem structure (that is, organised into folders and files), you could retrieve every single file within a given directory.
The following listing demonstrates how to get files within a particular directory. We'll assume there's a "directory" in our bucket with the name
myDir
and that there are a number of files and sub-directories in there.
Listing 9 Getting a list of objects (get-objects-prefix.php)
require_once('Zend/Service/Amazon/S3.php'); $awsKey = '[your key]'; $awsSecretKey = '[your secret key]'; $s3 = new Zend_Service_Amazon_S3($awsKey, $awsSecretKey); $bucketName = 'phpriot-test-bucket'; $ret = $s3->getObjectsByBucket($bucketName, array( 'prefix' => 'myDir/' )); var_dump($ret); Output: array 0 => string 'myDir/file1.txt' (length=15) 1 => string 'myDir/file2.txt' (length=15) 2 => string 'myDir/subDir/file3.txt' (length=22)
This listing retrieves every single object with the given prefix. On the other hand, if you only want to retrieve objects that aren't in a sub-directory (so based on the output of the previous listing, not including the
subDir
directory), you can also specify the delimiter
parameter.
This works by excluding objects in which the specified delimiter string appears. The following listing demonstrates listing only files in the specified directory.
Listing 10 Getting a list of objects in a single directory (get-objects-delimiter.php)
require_once('Zend/Service/Amazon/S3.php'); $awsKey = '[your key]'; $awsSecretKey = '[your secret key]'; $s3 = new Zend_Service_Amazon_S3($awsKey, $awsSecretKey); $bucketName = 'phpriot-test-bucket'; $ret = $s3->getObjectsByBucket($bucketName, array( 'prefix' => 'myDir/', 'delimiter' => '/' )); var_dump($ret); Output: array 0 => string 'myDir/file1.txt' (length=15) 1 => string 'myDir/file2.txt' (length=15)
No comments:
Post a Comment