2013-09-08 36 views
21

Tôi đang cố gắng lấy danh sách Object trong một thư mục cụ thể trong nhóm của tôi.Liệt kê các đối tượng trong một thư mục cụ thể trên Amazon S3

Tôi biết rằng để có được một danh sách tất cả các đối tượng của tôi, tôi làm:

$objects = $client->getIterator('ListObjects', array(
    'Bucket' => $bucket 
)); 

Tôi muốn có được chỉ các đối tượng trong thư mục my/folder/test. Tôi đã cố gắng thêm

 'key' => "my/folder/test", 

 'prefix' => "my/folder/test", 

Nhưng nó chỉ đơn giản trả về tất cả các đối tượng trong xô của tôi.

Trả lời

46

Bạn cần sử dụng Prefix để hạn chế tìm kiếm vào một thư mục cụ thể (tiền tố chung).

$objects = $client->getIterator('ListObjects', array(
    "Bucket" => $bucket, 
    "Prefix" => "your-folder/" 
)); 
+0

Vỏ của máy nhạy cảm, vì vậy nó phải là 'Tiền tố 'nơi tôi viết' tiền tố '. :\ Cảm ơn đã giúp đỡ. –

+0

Có thể sửa đổi điều này để chỉ liệt kê các nhóm trong một nhóm (sâu 1 cấp) không? – raphael75

+0

@ raphael75 cho rằng bạn có thể tìm thấy ['s3.listBuckets()'] (https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/examples-s3-buckets.html) phương pháp – balexandre

12

Câu trả lời là ở trên tuy nhiên tôi figured tôi sẽ cung cấp một ví dụ làm việc hoàn toàn có thể sao chép và dán trực tiếp vào một file php và chạy

use Aws\S3\S3Client; 

require_once('PATH_TO_API/aws-autoloader.php'); 

$s3 = S3Client::factory(array(
    'key' => 'YOUR_KEY', 
    'secret' => 'YOUR_SECRET', 
    'region' => 'us-west-2' 
)); 

$bucket = 'YOUR_BUCKET_NAME'; 

$objects = $s3->getIterator('ListObjects', array(
    "Bucket" => $bucket, 
    "Prefix" => 'some_folder/' //must have the trailing forward slash "/" 
)); 

foreach ($objects as $object) { 
    echo $object['Key'] . "<br>"; 
} 
+0

S3Client :: nhà máy không được chấp nhận trong SDK 3.x, nếu không giải pháp là hợp lệ – Radu

+3

để thay thế phương pháp nhà máy, sử dụng điều này, $ s3Client = new S3Client ([ 'version' => '2006-03-01 ', ' region '=>' ap-southeast-1 ', ' credentials '=> [ ' key '=>' yourkey ', ' secret '=>' yoursecreky ' ] ]); –

Các vấn đề liên quan