宝典:第十式 无插件文件上传

阅读更多
本来想做一个的是一个用户直接选定EXCEL文件提交后将信息显示到页面
但是这个HTTP不让做,所以就做了个先上传到服务器再操作.
先说说我是怎么实现上传的吧!
首先试图就不用说了,看下就知道了

 
<%form_tag ({:action=>"upload"},:multipart=>true ) do %>
文件路径:
保存文件名 (无须填写后缀)
<%end%>

添加了一些JS, 用于同时提交多个文件.

然后就是控制器了
  def upload    
      unless request.get?  
    i=params[:file].size
    for num in (0..i-1)  
    if params[:file][num].original_filename[-3,3] == "xls"
      filename = uploadFile(params[:file][num],params[:names][num])
    else
      flash[:notice]  = "上传失败,上传的并非EXCEL文件!"
     end
   end
  end
  end

  protected
    
  def uploadFile(file,filenames)
     if !file.original_filename.empty?
      @filename = getFileName(file.original_filename,filenames)
      File.open("#{RAILS_ROOT}/excel/#{@filename}", "wb") do |f|
      f.write(file.read)
      end
     return @filename 
    end
  end
  def getFileName(filename,filenames)  
     if !filename.nil?  
       filename = filenames+".xls"
        return filename
     end     
  end

这里需要解释下的是, 文件将保存在RAILS_ROOT/excel/文件夹里面,这个可以根据需要改变.
依照上面应该能将文件成功保存到EXCEL文件夹下面
顺带现实文件夹下文件的方法.
辅助方法里面些上这些
require 'find'
 def root_excel
    options = Array.new
	Find.find(RAILS_ROOT + "/excel") do |lang|              
	  if lang =~ /\.xls$/
           lang_pattern = File.basename(lang)      
           options << lang_pattern
         end
	end
	options
   end 

再在试图中加上
<%for excel in root_excel%>
<%=excel%>
<%end%>


EXCEL的文件就能显示出来了

上传了就可以去显示了
http://sayid2008.iteye.com/blog/188472提供显示

你可能感兴趣的:(Excel,Rails,Ruby,Flash,prototype)