使用 Fineuploader 进行 Amazon s3 上传的文档签名失败


Document signing failed using Fineuploader to make amazon s3 uploads

我成功地测试了使用传统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"
},
});

在端点中.php我已经分配了clientPrivateKey,bucketName和hostName,我假设其余的东西最好保持不变。(包括作曲家.json文件)

错误:
1.尝试解析签名
时出错2.收到空或无效的服务器响应
3.策略签名失败

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

必须包含以下变量的值:

  • $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 密钥不正确。

关于你的另外两个问题:

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

不,精细上传者 S3 会创建这些。请注意,策略文档仅用于非分块上传。对于分块上传,将使用 S3 分段上传 API,并要求签名服务器改为对一串标识标头进行签名。

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

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