FineUploader的success_action_status策略错误

时间:2017-03-17 22:25:58

标签: ruby-on-rails amazon-s3 fine-uploader

我一直在尝试在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

0 个答案:

没有答案