迭代亚马逊S3上文件夹中的对象

Kil*_*Bug 4 php amazon-s3 amazon-web-services guzzle

我们有一个应用程序,用户可以在其中创建自己的网页并托管它们.我们使用S3来存储页面,因为它们是静态的.在这里,因为我们有每个用户100个存储桶的限制,我们决定使用每个文件夹用户在一个桶里面.

现在,如果用户想要在他的域名上托管他的网站,我们会询问他的域名(当他开始我们在我们的子域名上发布它)时,我必须重命名该文件夹.

S3是一个平面文件系统我知道实际上没有文件夹,只有分隔符/分隔值,所以我不能进入文件夹并检查它包含多少页面.API允许它逐个但是为此我们必须知道对象名称在桶里.

我通过文档去了,碰上了迭代器,我还没有实现yet.This使用狂饮,而我没有经验和执行面临的挑战

我还有什么其他路可走,或者我需要走这条路.

Jer*_*lom 11

您可以通过执行以下操作为"文件夹"的内容创建迭代器:

$objects = $s3->getIterator('ListObjects', array(
    'Bucket'    => 'bucket-name',
    'Prefix'    => 'subfolder-name/',
    'Delimiter' => '/',
));

foreach ($objects as $object) {
    // Do things with each object
}
Run Code Online (Sandbox Code Playgroud)

如果你只需要一个计数,你可以这样:

echo iterator_count($s3->getIterator('ListObjects', array(
    'Bucket'    => 'bucket-name',
    'Prefix'    => 'subfolder-name/',
    'Delimiter' => '/',
)));
Run Code Online (Sandbox Code Playgroud)