rails上傳圖片代碼實例

来源:互联网 发布:装修监理必知 编辑:程序博客网 时间:2024/05/01 12:36

今天講解一下rails的圖片上傳,就是最平常的上傳圖片 這裡的rails版本2.3.5


首先新建一個write_pic model內容如下:

class WritePicrequire "RMagick"require "uuid"def self.write(pic_data,ori_name,resize = nil,file_type = "jpg",tag=false)#File.delete("c:/programData/ruby-uuid") if RAILS_GEM_VERSION == '2.1.2'uuid = ori_name || "#{UUID.new.generate}.#{file_type}"i = Magick::Image.from_blob(pic_data).firstif resizep=resize[:width].to_i*1.00 /i.columnsi.resize!(resize[:width],resize[:height]|| i.rows*p)endwh=0width = i.columnsheight = i.rowsif width > heightwh =1endi.write("#{RAILS_ROOT}/public/images/user_pic/#{uuid}")if tagreturn wh,uuidelsereturn uuidendenddef self.get_pic(url)uuid = "#{UUID.new.generate}.#{file_type}"img_orig1 = Magick::Image.read(url).firstimage1 = img_orig1.resize_to_fit(300,300)image1.write("#{RAILS_ROOT}/public/images/weibo_pic/#{uuid}")return uuidendend

上傳 圖片是用的插件所以最上面載入了插件。


調用write_pic 這個model的model文件寫法如下

class Theme < ActiveRecord::Baserequire "RMagick"require "uuid"def _image=(picture_field)if picture_field != ""self.image = WritePic.write(picture_field.read,self.image,nil)endenddef _imageself.imageenddef suoluetu=(picture_field)if picture_field != ""self.thumbnail = WritePic.write(picture_field.read,self.thumbnail,nil,"png")endenddef suoluetuself.thumbnailendend


controller裡面不用在乎太多,直接上view

<h1>New theme</h1><% form_for(@theme,:html=>{:multipart=>'true'}) do |f|%><%= f.error_messages %><p><%= f.label :name %><br /><%= f.text_field :name %></p><p><%= f.label :color %><br /><%= f.text_field :color %></p><p><%= f.label :lastcolor %><br /><%= f.text_field :lastcolor %></p><p><%= f.label :image %><br /><%= f.file_field :_image %></p><p><%= f.label :thumbnail %><br /><%= f.file_field :suoluetu %></p><p><%= f.submit "Create" %></p><% end %><%= link_to 'Back', themes_path %>
0 0
原创粉丝点击