2011-02-10 83 views
1

我试图让http://www.uploadify.com/与Ruby on Rails 3.0.3一起工作,但文件正在上传,但我试图修复以下错误消息。任何帮助非常感谢。Uploadify - Paperclip - Rails 3.0.3

开始POST “/影片/”,对于在10.170.163.142 2011-02-10 16点57分16秒0000 处理由VideosController#创建以HTML 参数:{ “文件名”=>“tvshow。 AVI “ ”文件夹“=> ”/“, ”_website_session“=> ”BAh7CEkiD3Nlc3Npb25faWQGOgZFRiIlOTA1OTIwODE1NDNkZDhkYzU2Yjc0MWJhMTdiNWFlZTlJIhBfY3NyZl90b2tlbgY7AEZJIjEvd3dnSjQ3NE83cDQ3SkF0ZXU4alN3dHdkaHl5Wm9vV29XRllBOWc1ajRBPQY7AEZJIgx1c2VyX2lkBjsARmkG - f618cf0d51fe1beebcc03eb200d1b3d023c98757“, ”/ wwgJ474O7p47JAteu8jSwtwdhyyZooWoWFYA9g5j4A“=> ”= authenticity_token“, ”Filedata上“=>#> ”载“=>” 提交查询“} 已完成0ms

ActionController :: InvalidAuthenticityToken(Ac tionController :: InvalidAuthenticityToken): 应用/中间件/ flash_session_cookie_middleware.rb:17:在'呼叫”

渲染/Volumes/Storage/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0。 3/lib/action_dispatch/middleware/templates/rescues/_trace.erb(2.8ms) Rendered /Volumes/Storage/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.3/lib/action_dispatch /middleware/templates/rescues/_request_and_response.erb(11.2ms) Rendered /Volumes/Storage/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.3/lib/action_dispatch/middleware/templates/ (20.4ms)

我不明白whats在这里,为什么文件没有上传?

require 'rack/utils' 

    class FlashSessionCookieMiddleware 

     include Rack::Utils 

     def initialize(app, session_key = '_session_id') 
     @app = app 
     @session_key = session_key 
     end 

     def call(env) 
     if env['HTTP_USER_AGENT'] =~ /^(Adobe|Shockwave) Flash/ 
      params = ::Rack::Request.new(env).params 
      env['HTTP_COOKIE'] = [ @session_key, params[@session_key] ].join('=').freeze unless params[@session_key].nil? 
     end 
     @app.call(env) 
     end 
    end 
+0

看看这里:https://github.com/apneadiving/Pic-upload---Crop-in-Ajax – apneadiving 2011-02-10 18:38:27

回答

1

我发现这个插件https://github.com/trevorturk/flash_cookie_session该做的工作就好了,这是我的看法

<% content_for :head do %> 
<link href="/uploadify/uploadify.css" type="text/css" rel="stylesheet" /> 
<script type="text/javascript" src="/uploadify/jquery.min.js"></script> 
<script type="text/javascript" src="/uploadify/swfobject.js"></script> 
<script type="text/javascript" src="/uploadify/jquery.uploadify.min.js"></script> 
<script type="text/javascript"> 
<%- session_key = Rails.application.config.session_options[:key] -%> 
$(document).ready(function() { 
    $('#video-upload').uploadify({ 
    uploader  : '/uploadify/uploadify.swf', 
    cancelImg  : '/uploadify/cancel.png', 
    auto   : true, 
    multi   : false, 
    script   : '/videos/', 
    onComplete  : function(a, b, c, response){ eval(response) }, 
    scriptData  : { 
      "<%= key = Rails.application.config.session_options[:key] %>" : "<%= cookies[key] %>", 
      "<%= request_forgery_protection_token %>" : "<%= form_authenticity_token %>", 
      } 
    }); 
}); 
</script> 
<% end %> 

谢谢大家。

+0

flash_cookie_session现在可以与uploadify-rails 3.1.1.1无缝集成。在uploadify-rails之前,只需在您的Gemfile中包含flash_cookie_session,并且Flash会话问题将在幕后处理。 – 2012-12-14 00:42:42

0

我建议你在初始化时打印@session_key,并确保它是正确的。密钥的名称及其值必须与初始化程序中的值相同。

0

只需要注意,在导轨3上,我必须添加u和encodeURIComponent才能使其工作。

{ 
"<%= key = Rails.application.config.session_options[:key] %>" : "<%= u cookies[key] %>", 
"<%= request_forgery_protection_token %>" : encodeURIComponent("<%= u form_authenticity_token %>"), 
} 
1

我一直在浏览一会,终于找到了这个代码来使用。然而,更新的Uploadify选项在那里。快速C/P(这是HAML)

Uploadify 3.1

$(document).ready(function() { 
       $('#image-uploader').uploadify({ 
       swf    : '/uploadify/uploadify.swf', 
       uploadLimit  : 10, 
       auto   : true, 
       multi   : false, 
       script   : '/videos/', 
       onComplete  : function(a, b, c, response){ eval(response) }, 
       formData  : { 
         '"#{key = Rails.application.config.session_options[:key]}"' : '"#{cookies[key]}"', 
         '#{request_forgery_protection_token}' : '#{form_authenticity_token}', 
         } 
       }); 
      }); 

这一部分:

cancelImg  : '/images/uploadify/cancel.png', 

已经转移到了CSS文件。

对于会话,使用flash_cookie_session gem,这比尝试解决问题的方法好得多。