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

Document signing failed using Fineuploader to make amazon s3 uploads

我成功测试了使用传统方式上传到本地服务器 PHP。 但是,我在上传到 Amazon s3 时遇到问题。

我使用 git 示例编写了 php,因为 reference.Please 告诉我我做错了什么。 所有引用的脚本都在我的本地系统中的正确位置,我也没有发出任何 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.Error 正在尝试解析签名
2.Recieved 空的或无效的服务器响应
3.Policy 签名失败

进一步: 政策文件是否明确由我们自己撰写? 我如何知道我的存储桶是否仅支持版本 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 密钥不正确。

关于你的另外两个问题:

Are policy documents to be authored explicitly by ourselves?

不,Fine Uploader S3 创建这些。请注意,政策文件 用于 non-chunked 上传。对于分块上传,使用 S3 分段上传 API,并要求您的签名服务器签署一个识别字符串 headers。

How do I know if my bucket supports only version 4 signature?

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