Rails中文件上传 RailsWebworkRubyF#HTML
程序员文章站
2022-07-05 22:13:44
...
以前习惯了用webwork,都好久没有过问过文件如何具体上传的了,只是拿cos来用一下,要不是今天需要处理rails文件上传都快忘记了
目标:
将文件保存到指定的文件夹中,对它重命名,保存重命名后的文件名称
为了能使任何controller都能使用文件上传的功能,变将代码放置在application.rb中
在页面中,我们定义一<%=file_field "object","field"%>
然后在对应的controller中调用即可
目标:
将文件保存到指定的文件夹中,对它重命名,保存重命名后的文件名称
为了能使任何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