第一步:前端界面创建一个提交用的form表单
<%= form_for :product ,url: uploadpro_path do |f| %>
<p>图片上传</p>
<%= f.file_field :image_url %>
<%= f.submit value="提交" %>
<% end %>
第二步:MODEL中创建一个对应的product的模型用于存储上传的文件(MODEL文件中可以对上传的数据进行有效的验证,例如文件格式等).控制台输入:1.rails generate model product name:string image_url:string 2.rake db:migrate 运行迁移.
第三步:控制器中创建上传处理方法uploadpro
def uploadpro
@product=Product.new(params[:product]);
unless request.get?
filename = uploadfile(@product.image_url)
@product.image_url = filename
@product.save
end
redirect_to search_path
end
def uploadfile(file)
if !file.original_filename.empty?
@filename = file.original_filename
#设置目录路径,如果目录不存在,生成新目录
FileUtils.mkdir("#{Rails.root}/public/upload") unless File.exist?("#{Rails.root}/public/upload")
#写入文件
##wb 表示通过二进制方式写,可以保证文件不损坏
File.open("#{Rails.root}/public/upload/#{@filename}", "wb") do |f|
f.write(file.read)
end
return @filename
end
end