文档签名失败,使用Fineuploader进行亚马逊s3上传

时间:2016-01-21 10:03:42

标签: php amazon-s3 fine-uploader

我使用传统的PHP成功测试了上传到本地服务器。 但是,我在向亚马逊s3上传时遇到问题。

我使用git示例编写php作为参考。请告诉我我做错了什么。 引用的所有脚本都位于我本地系统的正确位置,我也没有提出任何CORS请求。

以下是具体的代码部分:

// UI实例

var s3uploader = new qq.s3.FineUploader({

request: {
endpoint: "bucket.s3.amazonaws.com",
accessKey: "given key"
},
signature: {
endpoint: "endpoint.php"
},
uploadSucess: {
endpoint: "endpoint.php?success"
},
});

在endpoint.php中,我已经分配了clientPrivateKey,bucketName和hostName,我假设剩下的事情最好保持不变。 (包括composer.json文件)

错误:
1.试图解析签名的错误
2.收到空的或无效的服务器响应
3.政策签署失败

此外: 政策文件是否由我们自己明确撰写? 我如何知道我的存储桶是否仅支持版本4签名?

1 个答案:

答案 0 :(得分:1)

您必须包含以下变量的包含值:

  • $ clientPrivateKey = $ _ENV [' AWS_CLIENT_SECRET_KEY'];
  • $ serverPublicKey = $ _ENV [' AWS_SERVER_PUBLIC_KEY'];
  • $ serverPrivateKey = $ _ENV [' AWS_SERVER_PRIVATE_KEY'];
  • $ expectedBucketName = $ _ENV [' S3_BUCKET_NAME'];

此外,如果您正在使用v4签名,则还必须包含以下值:

  • $ expectedHostName = $ _ENV [' S3_HOST_NAME'];

如果您看到签名错误,则表示您尚未设置所有这些值,或AWS键不正确。

关于你的另外两个问题:

  

政策文件是否由我们自己明确撰写?

不,Fine Uploader S3会创建这些。请注意,策略文档用于非分块上传。对于分块上传,使用S3分段上传API,并要求您的签名服务器签署一串标识头。

  

如何知道我的存储桶是否仅支持版本4签名?

http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region