2013-09-08 27 views
21

Sto cercando di ottenere l'elenco di Object in una cartella specifica nel mio bucket.Elenca gli oggetti in una cartella specifica su Amazon S3

so che per ottenere un elenco di tutti i miei oggetti che faccio:

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

voglio ottenere solo gli oggetti nella cartella my/folder/test. Ho provato ad aggiungere

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

E

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

ma restituisce semplicemente tutti gli oggetti nel mio secchio.

risposta

46

È necessario utilizzare Prefix per limitare la ricerca a una directory specifica (un prefisso comune).

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

sua maiuscole e minuscole, quindi deve essere 'Prefisso 'dove ho scritto' prefisso '. :\ Grazie per l'aiuto. –

+0

È possibile modificare questo per elencare solo i bucket all'interno di un bucket (livello 1 in profondità)? – raphael75

+0

@ raphael75 per quello puoi trovare ['s3.listBuckets()'] (https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/examples-s3-buckets.html) metodo – balexandre

12

La risposta è al di sopra però ho pensato che vorrei fornire un esempio di lavoro completo che può essere copiato e incollato direttamente in un file php e corse

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 è obsoleto in SDK 3.x, altrimenti la soluzione è valida – Radu

+3

per la sostituzione del metodo factory, utilizzare questo, $ s3Client = new S3Client ([ 'versione' => '2006-03-01 ', 'regione'=> 'ap-sud-est-1', 'credenziali'=> [ 'chiave'=> 'YourKey', 'segreto'=> 'yoursecreky' ] ]); –