rails上传图片代码实例
今天讲解一下rails的图片上传,就是最平常的上传图片这里的rails版本2.3.5
首先新建一个write_picmodel内容如下:
classWritePic
require"RMagick"
require"uuid"
defself.write(pic_data,ori_name,resize=nil,file_type="jpg",tag=false)
#File.delete("c:/programData/ruby-uuid")ifRAILS_GEM_VERSION=='2.1.2'
uuid=ori_name||"#{UUID.new.generate}.#{file_type}"
i=Magick::Image.from_blob(pic_data).first
ifresize
p=resize[:width].to_i*1.00/i.columns
i.resize!(resize[:width],resize[:height]||i.rows*p)
end
wh=0
width=i.columns
height=i.rows
ifwidth>height
wh=1
end
i.write("#{RAILS_ROOT}/public/images/user_pic/#{uuid}")
iftag
returnwh,uuid
else
returnuuid
end
end
defself.get_pic(url)
uuid="#{UUID.new.generate}.#{file_type}"
img_orig1=Magick::Image.read(url).first
image1=img_orig1.resize_to_fit(300,300)
image1.write("#{RAILS_ROOT}/public/images/weibo_pic/#{uuid}")
returnuuid
end
end
上传图片是用的插件所以最上面加载了插件。
调用write_pic这个model的model文件写法如下
classTheme<ActiveRecord::Base require"RMagick" require"uuid" def_image=(picture_field) ifpicture_field!="" self.image=WritePic.write(picture_field.read,self.image,nil) end end def_image self.image end defsuoluetu=(picture_field) ifpicture_field!="" self.thumbnail=WritePic.write(picture_field.read,self.thumbnail,nil,"png") end end defsuoluetu self.thumbnail end end
controller里面不用在乎太多,直接上view
<h1>Newtheme</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%>
热门推荐
10 五一公司放假祝福语简短
11 追星女孩的祝福语简短
12 给长辈端午祝福语 简短
13 生日祝福语有诗意简短
14 团圆日祝福语简短
15 中秋商务祝福语简短最新
16 温暖文艺简短祝福语短句
17 男孩上学祝福语简短的
18 入住酒店文案祝福语简短