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%>
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下