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 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
@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
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
@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
这样生存的图片没有任何问题

浙公网安备 33010602011771号