通过PHP在AWS SDK中使用S3部分键


Using S3 partial keys in AWS SDK with PHP

我正在阅读:http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.S3.S3Client.html#_getBucketCors

我有一个部分密钥ex: "/myfolder/myinnerfolder/"

但是实际上myinnerfolder里面有很多对象(文件)

我相信我可以这样命名:

$result = $client->getObject(array(
            'Bucket' => $bucket,
            'Key'    => $key
        ));
        return $result;

如果我有完整的键。我如何调用上面的东西,但它返回所有的对象和/或他们的名字给我?在Python中,您可以简单地通过键的前面请求,但我没有看到这样做的选项。什么好主意吗?

您需要使用带有'Prefix'参数的listObjects()方法。

$result = $client->listObjects(array(
    'Bucket' => $bucket,
    'Prefix' => 'myfolder/myinnerfolder/',
));
$objects = $result['Contents'];

为了使这更容易,特别是如果您有超过1000个带有该前缀的对象(这通常需要多个请求),您可以使用SDK的Iterators特性。

$objects = $client->getIterator('ListObjects', array(
    'Bucket' => $bucket,
    'Prefix' => 'myfolder/myinnerfolder/',
));
foreach ($objects as $object) {
    echo $object['Name'];
}