我尝试使用S3 PHP SDK生成预先签名的网址请求,如下所示:
*USER_CONTENT_BUCKET_NAME
*$key
是constants.php中定义的存储桶名称
var_dump($cmd)
是字符串键。
如果我getCommand()
我可以看到createPresignedRequest()
正确返回了该对象。
但是从"Argument 2 passed to Guzzle\Service\Client::getCommand() must be of the type array, object given".
电话中,我得到了一个例外 -
[button tag]
帮助?
答案 0 :(得分:0)
问题已解决。
相当难以捕捉,因为错误信息无助于理解下划线问题。
亚马逊用他们的3.x PHP api描述了创建预签名网址的方式,就是我上面尝试的方式。然而,事实证明我们正在使用Amazon aws的2.8版本。 在这种情况下,呼叫应该是这样的:
$cmd = self::$S3Client->getCommand('GetObject', array('Bucket' => USER_CONTENT_BUCKET_NAME,'Key' => $key));
$presignedUrl = $cmd->createPresignedUrl('+20 minutes');
Guzzle异常抛出是我调用的方法不存在的一个症状。
我希望这会帮助其他人陷入同样的境地。