欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Rails中文件上传 RailsWebworkRubyF#HTML 

程序员文章站 2022-07-05 22:13:44
...
以前习惯了用webwork,都好久没有过问过文件如何具体上传的了,只是拿cos来用一下,要不是今天需要处理rails文件上传都快忘记了Rails中文件上传
            
    
    
        RailsWebworkRubyF#HTML 

目标:
  将文件保存到指定的文件夹中,对它重命名,保存重命名后的文件名称

为了能使任何controller都能使用文件上传的功能,变将代码放置在application.rb中
# Filters added to this controller will be run for all controllers in the application.
# Likewise, all the methods added will be available for all controllers.
class ApplicationController < ActionController::Base
   before_filter :configure_charsets  

   def configure_charsets        
       @headers["Content-Type"]="text/html;charset=utf-8"    
   end    
  
  def uploadFile(file)  
     if !file.original_filename.empty?
       #生成一个随机的文件名    
       @filename=getFileName(file.original_filename)       
       #向dir目录写入文件
       File.open("#{RAILS_ROOT}/public/emag/upload/#{@filename}", "wb") do |f| 
          f.write(file.read)
       end 
       #返回文件名称,保存到数据库中
       return @filename
     end
  end 

  def getFileName(filename)
     if !filename.nil?
       require 'uuidtools'
       filename.sub(/.*./,UUID.random_create.to_s+'.')
     end
  end    
end


在页面中,我们定义一<%=file_field "object","field"%>
 <%=file_field 'book','bgImage'%>


然后在对应的controller中调用即可
def create
    if request.get?
      @book=Book.new
    else
      @book=Book.new(params[:book])   
      @book.bgImage=uploadFile(params[:book]['bgImage']) 
      if @book.save
        redirect_to_index
      end
    end
  end