亚马逊s3批量上传

Wak*_*eel 7 php amazon-s3

我一直在尝试使用s3客户端execute()方法进行批量上传.它一直抛出异常:

消息:参数1传递给Aws\AwsClient :: execute()必须实现接口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);
Run Code Online (Sandbox Code Playgroud)

提前致谢!

小智 10

我自己解决了这个问题

而不是调用$s3->execute(),将客户端和$commands数组传递给CommandPool,如下所示:

use Aws\CommandPool;

// your code here

$results = CommandPool::batch($s3, $commands);
Run Code Online (Sandbox Code Playgroud)

您将收到一系列结果,按照与命令相同的顺序排序.其中一个不同之处是,Exception如果命令失败,这也会包含对象.