2016-09-22 24 views
6

S3 istemcisi execute() yöntemini kullanarak toplu yükleme yapmaya çalışıyorum. Bu atma istisna tutar:Amazon s3 toplu yükleme

İleti

: Evs geçirilen değişken 1 \ AwsClient :: arayüzü Evs \ CommandInterface uygulamalıdır) (yürütmek, dizi verilen Hatta izledikten sonra içinde ....

denilen doc'dan örnek kod. peşin

$bucket = 'myBucket'; 
$commands = []; 

$s3 = new Aws\S3\S3Client([ 
    'version' => 'latest', 
    'region' => 'us-west-1', 
]); 

$commands[] = $s3->getCommand('PutObject', [ 
    'Bucket' => $bucket, 
    'Key' => 'key1.gif', 
    'Body' => 'PATH_TO_FILE_1', 
]); 

$commands[] = $s3->getCommand('PutObject', [ 
    'Bucket' => $bucket, 
    'Key' => 'key2.gif', 
    'Body' => 'PATH_TO_FILE_2', 
]); 

$s3->execute($commands); 

Teşekkür:

Kontrol bu örnek belki yanlış bir şey yapıyorum!

cevap

9

Sadece bunu kendim çözdüm. Yerine $s3->execute() çağıran

, şöyle bir CommandPool müşteri ve $commands dizi geçirmek:

use Aws\CommandPool; 

// your code here 

$results = CommandPool::batch($s3, $commands); 

Sen komutları aynı sırada göre sonuçların bir dizi alırsınız. Farklılardan biri, komutun başarısız olması durumunda bunun Exception nesnesini de içermesidir.

+0

Güzel bir Chris .. Çok meşguldüm ve bugün test oldum! – Wakeel

+0

Bu şeyler https://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/migration.html adresinde eklenmedi –