浏览 3339 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-16
可是将图片文件保存到数据库中占有太多的物理空间,并且速度慢,所以改为在数据库中存放图片的url,将图片存放到public/images/目录下,在这里没有使用其他的插件, 在getpicture.rhtml中写下如下的代码 <html> <head> <center> <h1>Select Your Picture and Upload</h1> </center> </head> <body> <center> <%= error_messages_for("picture") %> <% form_for(:picture, :url => { :action => 'savepicture'}, :html => { :multipart => true }) do |form| %> Comment: <%= form.text_field("comment") %> <br/> Upload Your picture: <%= form.file_field("uploaded_picture") %> <br/> <%= submit_tag("Upload file") %> <%= link_to "Back",{:action => "adminlist"} %> <% end %> </center> </body> </html> 上传的图片会被保存在uploaded_picture属性中,但数据库理没有这么一个字段,所以在模型对象里做如下设置 def uploaded_picture=(picture_field) self.name = base_part_of(picture_field.original_filename) self.content_type = picture_field.content_type.chomp #self.data = picture_field.read self.image_url = "/images/" + self.name File.open("#{RAILS_ROOT}/public/images/#{picture_field.original_filename}", "wb+") do |f| f.write(picture_field.read) end end def base_part_of(file_name) File.basename(file_name).gsub(/[^\w._-]/, '') end 利用File.open一行将图片文件复制到public/images/目录下,并保存了该图片的url 在页面显示的时候直接用 <img src="<%= @picture.image_url%>" width="400" height="400"/> 就可以显示出图片了 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-08-04
这几天我们也在做图片上传
我个人的理解是这样的 uploaded_picture是model的一个自定义属性 uploaded_picture=(picture_field) 是当发生符值时要触发的一个方法(当然他也有自定义的属性的含义) |
|
返回顶楼 | |
发表时间:2008-08-05
弱弱的问一句:
上传图片如果是中文,路径存不进去,怎么办? |
|
返回顶楼 | |
发表时间:2008-08-06
还真没考虑过这个问题,现在不做ruby了,也没有时间研究,真不好意思
|
|
返回顶楼 | |