源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

rails上传图片代码实例

  • 时间:2022-06-22 00:20 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:rails上传图片代码实例
今天讲解一下rails的图片上传,就是最平常的上传图片 这里的rails版本2.3.5 [b]首先新建一个write_pic model[/b]内容如下:
[u]复制代码[/u] 代码如下:
class WritePic require "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).first if resize 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 if width > height wh =1 end i.write("#{RAILS_ROOT}/public/images/user_pic/#{uuid}") if tag return wh,uuid else return uuid end end def self.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}") return uuid end end
上传 图片是用的插件所以最上面加载了插件。 [b]调用write_pic[/b] 这个model的model文件写法如下
[u]复制代码[/u] 代码如下:
class Theme < ActiveRecord::Base require "RMagick" require "uuid" def _image=(picture_field) if picture_field != "" self.image = WritePic.write(picture_field.read,self.image,nil) end end def _image self.image end def suoluetu=(picture_field) if picture_field != "" self.thumbnail = WritePic.write(picture_field.read,self.thumbnail,nil,"png") end end def suoluetu self.thumbnail end end
  [b]controller里面不用在乎太多,直接上view [/b]
[u]复制代码[/u] 代码如下:
<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)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部