2011-02-10 65 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,這比嘗試解決問題的方法好得多。