Rom*_*kin 8 php upload amazon file-upload amazon-s3
我正在为Amazon S3和CloudFront使用PHP类 - 链接.但是当我尝试将文件上传到存储桶时,我收到此错误:
[SignatureDoesNotMatch]我们计算的请求签名与您提供的签名不匹配.检查您的密钥和签名方法.
怎么解决?
谢谢.
注册亚马逊时,您可以创建一个密钥对(亚马逊称这些访问密钥ID和秘密访问密钥).
这两个用于签署对Amazon的Web服务的请求.亚马逊重新计算签名并进行比较,看它是否与您的请求中包含的签名相匹配.这样,秘密访问密钥永远不需要通过网络传输.
如果您收到"签名不匹配",则很可能您使用了错误的秘密访问密钥.你能仔细检查访问密钥和秘密访问密钥,以确保它们是正确的吗?
我个人收到这个错误是因为我的元数据中的字符。
有问题的字符是“-”字符,它在 unicode 中是“\u2013”,与“-”不同。
$result = $s3->putObject(array(
'Bucket' => $bucket,
'Key' => $keyname,
'Metadata' => [
'name' => 'Terminology – Blah'
]
));
Run Code Online (Sandbox Code Playgroud)
来自文档http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#UserMetadata 的注释 ...
Amazon S3 以小写形式存储用户定义的元数据。使用 REST 时,每个名称、值对都必须符合 US-ASCII,使用 SOAP 或基于浏览器的通过 POST 上传时,必须符合 UTF-8。