我一直在尝试在Rails中实现FineUploader,我遇到了以下错误:
根据政策无效:额外输入字段:success_action_status
我正在使用FineUploader文档中的示例,我的签名和政策签名正在顺利通过。看起来FineUploader正在传递" success_action_status"在POST到S3并导致问题?
有人知道我是否需要在S3上添加我的存储桶策略以外的其他内容,还是需要更改FineUploader上的参数?
以下是我用于FineUploader JS控件的实现:
var uploader = new qq.s3.FineUploader({
element: document.getElementById('fine-uploader'),
request: {
endpoint: 'https://MyBUCKET.s3.amazonaws.com/',
accessKey: 'MY_ACCESS_KEY'
},
signature: {
endpoint: 'home/generatesignature'
},
uploadSuccess: {
endpoint: '/s3/success'
},
iframeSupport: {
localBlankPagePath: '/success.html'
}
});
更新 在尝试让Rails与FineUploader一起工作后,我终于能够让它工作了。对于遇到实施FineUploader / Rails问题的任何人来说,关键是S3策略是在邮件正文中发送到服务器的,这是在返回之前需要编码和签名的。以下是在Rails中使所有内容在服务器端工作的操作
def generatesignature
policy = Base64.encode64(request.raw_post).gsub("\n","")
s3_signature = Base64.encode64(
OpenSSL::HMAC.digest(
OpenSSL::Digest::Digest.new('sha1'),
'YOUR_SECRET_KEY', policy)
).gsub("\n","")
params[:signature]= s3_signature
params[:policy] = policy
render :json => params, :status => 200 and return
end