【发布时间】:2015-06-05 19:42:38
【问题描述】:
对于小于 5mb 的文件,我的配置正在上传。对于大于 5mb 的文件,它们总是会因 AWS 的 Post 响应而失败:
<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>..
我正在使用 NodeJS,演示 s3handler.js 中的相关函数未更改,例如:signRestRequest() 函数似乎按照本文档的预期工作:
对于具有此配置的小于 5mb 的文件,如果连接关闭然后自动重新打开,则恢复工作。我在同一个本地 Ubuntu VM 中托管页面和 NodeJS。我的浏览器端配置:
$('#fineUploader').fineUploaderS3({
request: {
endpoint: "https://s3-us-west-2.amazonaws.com/bucket-name-redacted/",
accessKey: "keyredacted",
},
signature: {
endpoint: "http://192.168.1.203:8000/s3handler"
},
uploadSuccess: {
endpoint: "http://192.168.1.203:8000/s3UploadSuccess"
},
retry: {
enableAuto: true
},
chunking: {
enabled: true //not working
},
resume: {
enabled: true
}
});
这是经过 SHA1 HMac 编码,然后是 base64 编码之前的响应:
POST
application/pdf
x-amz-acl:private
x-amz-date:Fri, 05 Jun 2015 19:26:17 GMT
x-amz-meta-qqfilename:filename.pdf
/bucket-name/13af5c15-ba04-4375-a6f9-25c2691ed827.pdf?uploads
我的临时测试 S3 Bucket CORS 配置:
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<ExposeHeader>ETag</ExposeHeader>
<AllowedHeader>x-amz-acl</AllowedHeader>
<AllowedHeader>x-amz-meta-qqfilename</AllowedHeader>
<AllowedHeader>x-amz-date</AllowedHeader>
<AllowedHeader>x-amz-server-side-encryption</AllowedHeader>
<AllowedHeader>authorization</AllowedHeader>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
我可以根据需要提供任何其他信息并已购买许可证。谢谢!!
这是发送到 AWS 帖子以进行分段上传的标头:
【问题讨论】:
标签: node.js amazon-web-services file-upload amazon-s3 fine-uploader