У меня была точно такая же проблема с swfupload.
Насколько я помню:
Это происходит из-за того, что Flash неправильно устанавливает cookie в своем первом запросе (второй и последующие запросы в порядке). Я использовал промежуточное программное обеспечение Rack для копирования ключа сеанса в env ['HTTP_COOKIE], но он не работал должным образом.
Мои расследования привели меня к ошибке в объекте Rack :: Request, которая не позволяет ему правильно устанавливать куки, если env ['HTTP_COOKIE'] изначально пуст.
Вот код промежуточного программного обеспечения, который в итоге исправил его для меня:
class FlashUploadMiddleware
def initialize(app,session_key)
@app = app
@session_key = session_key
end
def call(env)
env['HTTP_COOKIE'] = "bugfix=true" unless env['HTTP_COOKIE']
if env['HTTP_USER_AGENT'] =~ /^(Adobe|Shockwave) Flash/
req = Rack::Request.new( env )
req.cookies[ @session_key ] = req["session_id"] unless req["session_id"].nil?
end
@app.call(env)
end
end
Этот класс должен находиться в файле с именем flash_upload_middleware.rb где-нибудь в вашем пути загрузки. Он инициализируется из файла .rb в config / initialisers
ActionController::Dispatcher.middleware.use(
FlashUploadMiddleware,
ActionController::Base.session_options[:key] )