Rails中文件上传

以前习惯了用webwork,都好久没有过问过文件如何具体上传的了,只是拿cos来用一下,要不是今天需要处理rails文件上传都快忘记了  

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

为了能使任何controller都能使用文件上传的功能,变将代码放置在application.rb中 
Java代码   收藏代码
  1. # Filters added to this controller will be run for all controllers in the application.  
  2. # Likewise, all the methods added will be available for all controllers.  
  3. class ApplicationController < ActionController::Base  
  4.    before_filter :configure_charsets    
  5.   
  6.    def configure_charsets          
  7.        @headers["Content-Type"]="text/html;charset=utf-8"      
  8.    end      
  9.     
  10.   def uploadFile(file)    
  11.      if !file.original_filename.empty?  
  12.        #生成一个随机的文件名      
  13.        @filename=getFileName(file.original_filename)         
  14.        #向dir目录写入文件  
  15.        File.open("#{RAILS_ROOT}/public/emag/upload/#{@filename}""wb"do |f|   
  16.           f.write(file.read)  
  17.        end   
  18.        #返回文件名称,保存到数据库中  
  19.        return @filename  
  20.      end  
  21.   end   
  22.   
  23.   def getFileName(filename)  
  24.      if !filename.nil?  
  25.        require 'uuidtools'  
  26.        filename.sub(/.*./,UUID.random_create.to_s+'.')  
  27.      end  
  28.   end      
  29. end  


在页面中,我们定义一<%=file_field "object","field"%> 
Java代码   收藏代码
  1. <%=file_field 'book','bgImage'%>  


然后在对应的controller中调用即可 
Java代码   收藏代码
  1. def create  
  2.     if request.get?  
  3.       @book=Book.new  
  4.     else  
  5.       @book=Book.new(params[:book])     
  6.       @book.bgImage=uploadFile(params[:book]['bgImage'])   
  7.       if @book.save  
  8.         redirect_to_index  
  9.       end  
  10.     end  
  11.   end  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值