如何从亚马逊s3对象获取密钥数组

时间:2015-08-03 06:54:26

标签: php object amazon-web-services amazon-s3

我正在使用amazon s3 v3 php sdk,我正在尝试获取所有对象的密钥,因为我正在使用

s3->listObjects([ 'Bucket' => $somebucketName]);

这个功能工作正常,我得到$somebucketName桶下的所有对象及其下面的形式

Aws\Result Object
(
    [data:Aws\Result:private] => Array
        (
            [IsTruncated] => 
            [Marker] => 
            [Contents] => Array
                (
                    [0] => Array
                        (
                            [Key] => 1.PNG
                            [LastModified] => Aws\Api\DateTimeResult Object
                                (
                                    [date] => 2015-07-14 07:22:25.000000
                                    [timezone_type] => 2
                                    [timezone] => Z
                                )

                            [ETag] => "23f423234v23v42424d23"
                            [Size] => 19980
                            [StorageClass] => STANDARD
                            [Owner] => Array
                                (
                                    [DisplayName] => sfsfssfsdf
                                    [ID] => 242f2342242342252g42f42vt34
                                )

                        )

                    [1] => Array
                        (
                            [Key] => 58.jpg
                            [LastModified] => Aws\Api\DateTimeResult Object
                                (
                                    [date] => 2015-07-14 07:20:26.000000
                                    [timezone_type] => 2
                                    [timezone] => Z
                                )

                            [ETag] => "vrtet4v4t54tvt4gvtgv45"
                            [Size] => 1226694
                            [StorageClass] => STANDARD
                            [Owner] => Array
                                (
                                    [DisplayName] => sfsfssfsdf
                                    [ID] => 34t3t3t3y43y4yg5yy4vg6u676
                                )

                        )

                    [2] => Array
                        (
                            [Key] => HDFHDFHDFHDFHFHFH
                            [LastModified] => Aws\Api\DateTimeResult Object
                                (
                                    [date] => 2015-07-30 12:07:42.000000
                                    [timezone_type] => 2
                                    [timezone] => Z
                                )

                            [ETag] => "3453345343rcf3f3r3r3f"

                )

            [Name] => SFSSD
            [Prefix] => 
            [MaxKeys] => 1000
            [@metadata] => Array
                (
                    [statusCode] => 200
                    [effectiveUri] => https://s3-us-west-2.amazonaws.com/SFSSD
                    [headers] => Array
                        (
                            [x-amz-id-2] =>  sdfsfs234sfs
                            [x-amz-request-id] => HSJFSD899
                            [date] => Mon, 03 Aug 2015 06:46:48 GMT
                            [x-amz-bucket-region] => us-west-2
                            [content-type] => application/xml
                            [transfer-encoding] => chunked
                            [server] => AmazonS3
                        )

                )

        )

)

现在我的问题是如何从上面的对象中获取如下所示的键数组

array("1.png","58.jpg","HDDHDFHDHDGH);

2 个答案:

答案 0 :(得分:4)

Aws\Result实施ArrayAccess。您可以像这样访问内容:

$result = $s3->listObjects(['Bucket' => $somebucketName])
$contents = $result['Contents'];

答案 1 :(得分:1)

来自commentPlease note that v1 of the SDK is deprecated。如果您仍在使用它,则可以使用以下代码段:

$ObjectsListResponse = s3->list_objects([ 'Bucket' => $somebucketName]);
$Objects = $ObjectsListResponse->body->Contents;
foreach ($Objects as $Object) {
        $keyArray[] = $Object->Key;
}

PHP S3 Examples