检索S3 - aws sdk v3 php中的对象用户元数据


Retrieve object user metadata in S3 - aws sdk v3 php

我正在寻找从我的S3桶对象中检索用户定义的元数据,从php sdk。

根据编辑对象元数据,用户元数据与对象一起存储并一起返回,并以"x-amz-meta-"开始

我通过控制台定义了对象上的用户元数据,如"x-amz-meta-test",在上传时,并在上传后添加它(通过web控制台,而不是上传API)。

测试元数据永远不会返回。我总是得到相同的系统元数据。也就是说,我在@metadata中只得到以下键:

文件夹

statuscode
effectiveUri
headers
   x-amz-id-2
   x-amz-request-id
   date
   x-amz-bucket-region
   content-type
   transfer-encoding
   server

Key
LastModified
   date
   timezone_type
   timezone
ETag
Size
StorageClass

然而,要在其他语言中实现这一点,需要一个简单的方法调用。

获取Android SDK中的用户元数据

在Java SDK中获取用户元数据

如何在PHP SDK中完成相同的任务?

我在使用v3 AWS SDK for PHP时遇到了同样的问题。经过一些研究和测试,我决定可以使用headObject:

<?php
    $headers = $s3->headObject(array(
      "Bucket" => $bucket,
      "Key" => $key
    ));
    print_r($headers->toArray());
?>

带有系统定义元数据和其他标识信息的示例输出:

Array
(
/* REMOVED */
    [Metadata] => Array
        (
            [orderdate] => Mon, 31 Aug 2015 19:03:52 +0000
            [color] => green
            [fruit] => apple
            [price] => 99.95
        )
/* REMOVED */
    [@metadata] => Array
        (
            [statusCode] => 200
            [effectiveUri] => https://s3.amazonaws.com/REMOVED/REMOVED
            [headers] => Array
                (
                    [x-amz-id-2] => REMOVED
                    [x-amz-request-id] => REMOVED
                    [date] => Wed, 02 Sep 2015 04:43:02 GMT
                    [x-amz-meta-orderdate] => Mon, 31 Aug 2015 19:03:52 +0000
                    [x-amz-meta-color] => green
                    [x-amz-meta-fruit] => apple
                    [x-amz-meta-price] => 99.95
                    [last-modified] => Wed, 02 Sep 2015 04:11:13 GMT
                    [etag] => "REMOVED"
                    [x-amz-storage-class] => REDUCED_REDUNDANCY
                    [accept-ranges] => bytes
                    [content-type] => application/octet-stream
                    [content-length] => 80771
                    [server] => AmazonS3
                )
        )
)