【发布时间】:2013-08-07 06:06:19
【问题描述】:
我在 ap-southeast-1 区域中创建了一个存储桶,并将 ACL 设置为私有读取。我能够使用 AWS PHP SDK 2 S3Client 类成功地将文件上传到存储桶内的文件夹。但是,我还需要在我的应用程序中显示指向这些文件的链接。因此,当用户单击一个按钮时,我会向我的服务器文件发送一个 AJAX 请求,然后我会获得通过 json 字符串返回给用户的 signedURL。但是,该 url 总是返回带有错误 SignatureDoesNotMatch 的 XML。
获取签名网址的代码如下:
//create the AWS reference string
$client = S3Client::factory(
array(
'key' => T_AWS_KEY,
'secret' => T_AWS_SECRET,
'region' => T_BASE_REGION
)
);
//method 1 - using Command Object
$command = $client->getCommand('GetObject', array(
'Bucket' => T_BASE_BUCKET . "/" . $firmId . "/invoices" ,
'Key' => $arr['file_reference_url'] ,
'ResponseContentDisposition' => 'attachment;filename=' . arr['file_reference_url']
));
$signedUrl = $command->createPresignedUrl('+10 minutes');
echo $signedUrl . "\n\n";
//method 2 - using getObjectUrl
echo $client->getObjectUrl(T_BASE_BUCKET . "/" . $firmId . "/invoices", $arr['file_reference_url'], "+10 minutes");
感谢任何帮助。
【问题讨论】:
标签: php sdk amazon-web-services