2016-09-22 24 views
6

私は、s3クライアント​​メソッドを使用してバッチアップロードを実行しようとしています。Amazon s3バッチアップロード

メッセージ:AWS \ AwsClientに渡される引数1 ::実行()インタフェースAWS \ CommandInterface、で呼ばれる指定された配列を、実装する必要があります....

をしても、次の後にそれは例外をスローし続けますdocのサンプルコード事前に

$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); 

ありがとう:

チェックこの例では、多分私は何か間違ったことをやっています!

答えて

9

ちょうどこれを自分で解決しました。代わりに$s3->execute()を呼び出す

、そのようなCommandPoolにクライアントと$commands配列を渡す:

use Aws\CommandPool; 

// your code here 

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

あなたはコマンドと同じ順序でソートされた結果の配列を、受け取ります。相違点の1つは、コマンドが失敗した場合、これにもExceptionオブジェクトが含まれることです。

+0

私はとても忙しく、今日はちょうどテストされています! – Wakeel

+0

これはhttps://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/migration.htmlに追加されていません –