我一直在尝试使用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如果命令失败,这也会包含对象.
| 归档时间: |
|
| 查看次数: |
991 次 |
| 最近记录: |