ruby

领取游戏新手卡来http://5433.com

导航

rails图片上传的一个怪异现象

在做ror开发的时候,简直感觉就是在堆砌插件,于是决定放弃各种图片上传插件,自来来写写图片上传,感觉也不是太麻烦.

(一)把上传放在一个单独类中

 

代码
class Upload    
  def uploadFile(file)   
    
if !file.original_filename.empty?   
      @filename
=getFileName(file.original_filename)
      #images 
= MiniMagick::Image.new(@filename)
      File.
new("#{RAILS_ROOT}/public/picture/#{@filename}""wb"do |f|   
        f.write(file.read)   
      end     
    end   
  end   
  
  def getFileName(filename)   
    
if !filename.nil?   
      Time.now.strftime(
"%Y%m%d%H%M%S"+ '_' + filename   
    end   
  end        
end 
代码
def create
    @image 
= Image.new(params[:image])

    respond_to 
do |format|
      
if @image.save
        Upload.
new.uploadFile(params[:image][:src])
        flash[:notice] 
= '图片上传成功'
        format.html { redirect_to(new_admin_image_url) }
      
else
        format.html { render :action 
=> "new" }
      end
    end
  end

 

 

图片是传到服务器,可内容全部丢失了,生成了一个空白的图片.

(二)放在model中

 

代码
def src=(src)
      
if src.size>0 then
          @contents_size 
= src.size
          @files_type 
= src.content_type
          @files_data 
= src.read
          @name 
= getFileName(src.original_filename)
      end
  end

  def add_pic
      
if true then
        File.open(
"#{RAILS_ROOT}/public/picture/#{@name}""wb"do |f|   
          f.write(@files_data)   
        end
        #images 
= MiniMagick::Image.new("#{RAILS_ROOT}/public/picture/"+@name)   
        #images.resize 
"30x30"
        #images.write(
"#{RAILS_ROOT}/public/picture/output.jpg")
        #self.update_attributes(:src 
=> self.src)
      end
  end

 

 

代码
def create
    @image 
= Image.new(params[:image])

    respond_to 
do |format|
      
if @image.save
        
if params[:image][:srcc].size>0
            @image.add_pic
        end
        flash[:notice] 
= '图片上传成功'
        format.html { redirect_to(new_admin_image_url) }
      
else
        format.html { render :action 
=> "new" }
      end
    end
  end

 

这样生存的图片没有任何问题

posted on 2010-03-14 23:35  最初的模样  阅读(340)  评论(0)    收藏  举报