[英]aws s3 php sdk 2 SignatureDoesNotMatch Error
我在ap-southeast-1区域中创建了一个存储桶,并将ACL设置为private-read。 我可以使用AWS PHP SDK 2 S3Client类将文件成功上传到存储桶中的文件夹。 但是,我还需要在应用程序中显示这些文件的链接。 因此,当用户单击一个按钮时,我向我的服务器文件发送了一个AJAX请求,并获得了signedURL,该URL通过json字符串返回给用户。 但是,URL始终返回带有错误SignatureDoesNotMatch的XML。
下面获取签名URL的代码:
//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");
任何帮助表示赞赏。
似乎您对什么是水桶感到困惑。 桶不嵌套。 T_BASE_BUCKET的值可能是您的存储桶,而其他部分则是对象键的一部分。 试一下:
$objectKey = $firmId . '/invoices/' . $arr['file_reference_url'];
echo $client->getObjectUrl(T_BASE_BUCKET, $objectKey, '+10 minutes');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.