rails 的 swfupload 插件

swfupload 利用 flash 作 ajax 式后台文件上传, 提供强大事件订阅机制。不幸的是 flash 的上传文件时不支持 cookie 发送,因此在有验证需要的场景会发生 session 丢失,而通常文件上传这块是需要权限校验的。
插件干的事比较简单,主要对 rails 的 cookiestore 进行 hacking, 使其可以接受由 querystring 传过来的 session_id。有需要的朋友可以通过 github 安装

安装了git:

ruby script/plugin install git://github.com/klesh/klesh_swfupload.git


没有 git 则直接点 download ,下载后解压到 vendor/plugins

完成后把 vendor/plugins/klesh_swfupload javascripts 和 swfs 文件 copy 到 public 目录

在 controller 中把接收文件的 action 设置 cookie_only 为 false
  session :cookie_only => false, :only => :ACTION_FOR_RECEIVING_FILES
  
  def ACTION_FOR_RECEIVING_FILES
    uploaded_file_name = params[:Filename]
    uploaded_file = params[:Filedata]
  end


view 里面:

  <%= javascript_include_tag 'swfupload' %>
  ...
  ...
  <%= swfupload 'swfuploader', {:action => :ACTION_FOR_RECEIVING_FILES}, {:button_text => 'Upload', :button_width => 60, 
  :button_height => 20, :upload_success_handler => "function(file, response){alert(response);}"} %>


swfupload 第一个参数指定客户端 javascript 实例名,第二个指定接收文件 action 的 url, 第三个则是 swfupload 客户端的参数,具体参数设置可参考 swfupload.org 或 vendor/plugins/klesh_swfuplpad/docs/swfupload.html

你可能感兴趣的:(JavaScript,git,Flash,Ruby,Rails)