2013-09-08 27 views
21

Objectのリストをバケット内の特定のフォルダの下に取得しようとしています。Amazon S3の特定のフォルダ内のオブジェクトを一覧表示する

私は私が私のすべてのオブジェクトのリストを取得することを知っている:

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

私はフォルダmy/folder/test下のオブジェクトのみを取得したいです。私は

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

そして

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

を追加しようとしている。しかし、それは単に私のバケット内のすべてのオブジェクトを返します。

答えて

46

特定のディレクトリ(共通の接頭辞)に検索を制限するには、Prefixを使用する必要があります。

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

その大文字と小文字を区別実行することができ、完全な作業例を提供します考え出し以上であるので、「プレフィックスでなければなりません私は '接頭辞'を書いていました。 :\ 助けてくれてありがとう。 –

+0

これを変更して、バケット(1レベル深度)内のバケットのみを一覧表示できますか? – raphael75

+0

@ raphael75あなたは['s3.listBuckets()'](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/examples-s3-buckets.html)を見つけることができます。メソッド – balexandre

12

答えは、しかし、私はコピーしてPHPファイルに直接貼り付けると

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 :: factoryはSDK 3.xで推奨されていません。それ以外の場合、解決方法は – Radu

+3

です。ファクトリメソッドの置き換えは $ s3Client = new S3Client([ 'version' => '2006-03-01 」 '領域' => 'AP-南東-1'、 'クレデンシャル' => [ 'キー' => 'yourkey' '秘密' => 'yoursecreky' ] ])。 –

関連する問題