`

上传图片的问题(不用插件)----图片浏览系统之一

阅读更多
这几天公司让做一个在线的照片展示系统用来测试两个星期的RoR自学成果,在做到上传照片时,因为是按照<<Web 敏捷开发>>来开发的,书上是将图片保存在数据库中,也就是说在数据库表建立一个名为data,类型为binary的字段,可以成功保存.
可是将图片文件保存到数据库中占有太多的物理空间,并且速度慢,所以改为在数据库中存放图片的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"/>
就可以显示出图片了
分享到:
评论
3 楼 guoyankun 2008-08-06  
还真没考虑过这个问题,现在不做ruby了,也没有时间研究,真不好意思
2 楼 shaka 2008-08-05  
弱弱的问一句:
上传图片如果是中文,路径存不进去,怎么办?
1 楼 vwangzhen 2008-08-04  
这几天我们也在做图片上传

我个人的理解是这样的
uploaded_picture是model的一个自定义属性
uploaded_picture=(picture_field)
是当发生符值时要触发的一个方法(当然他也有自定义的属性的含义)

相关推荐

    前端利用jquery插件上传图片

    在前端开发中,图片上传是常见的功能之一,特别是在社交媒体、电子商务和内容管理系统的应用场景中。jQuery,一个流行的JavaScript库,提供了丰富的API和插件来简化此类任务。本篇文章将深入探讨如何利用jQuery插件...

    PJBlog插件-站点聚焦

    "PJBlog插件-站点聚焦"是专门为PJBlog设计的一款增强型插件,旨在为用户带来更丰富的站点展示和浏览体验。这款插件的核心功能是将网站的重点内容、热门文章或者特色专题以更吸引人的方式呈现出来,提升网站的互动性...

    Joomla图片插件

    Joomla图片插件是一款专为Joomla内容管理系统设计的扩展,用于增强网站的图像展示功能。这款插件的独特之处在于其支持处理动画,使得网页上的图片展示更具动态效果,能够吸引用户注意力,提升用户体验。该插件由一个...

    易优批量图片加水印插件

    在互联网环境中,网页加载速度是影响用户体验的关键因素之一,尤其是当页面中包含大量图片时,过大的图片文件会显著延长加载时间,可能导致用户流失。这款插件通过智能压缩图片文件大小,有效解决了这一问题。 1. ...

    PbootCMS插件图片接入七牛云阿里云OSS加速图片资源展示

    在本文中,我们将深入探讨如何将PbootCMS插件与七牛云和阿里云OSS集成,以优化图片资源的加载速度,提升网站性能。PbootCMS是一款基于PHP的轻量级网站内容管理系统,适用于快速构建企业网站。针对V3.1.2版本,我们...

    可显示图片的商品评论插件 for ShopEX.rar

    【商品评论插件 for ShopEX】是一款专为ShopEX电子商务平台设计的程序插件,它旨在增强用户在浏览商品时的交互体验,提供一个能够直接查看和发布图片评论的功能。这款插件允许顾客在提交评论时附带相关商品图片,...

    WordPress自适应美女图片CX-UDY主题带会员积分下载整站源码.rar

    WordPress是全球最受欢迎的内容管理系统(CMS)之一,以其灵活性、易用性和丰富的插件及主题库而闻名。在本文中,我们将深入探讨“WordPress自适应美女图片CX-UDY主题带会员积分下载整站源码”这个主题,以及它在...

    FLASH切换商品图片插件for ECSHOP

    在电子商务网站中,商品图片是消费者了解产品最重要的途径之一。传统的图片切换方式可能只是简单的点击或左右箭头进行切换,而使用Flash技术的切换插件可以带来更加生动、动态的展示效果。例如,它可以实现淡入淡出...

    下一页工作室图片直读系统 -ASP源码.zip

    "下一页工作室图片直读系统 -ASP源码.zip" 是一个包含了ASP编程语言开发的图片直读系统的源代码包。ASP(Active Server Pages)是微软公司推出的一种服务器端脚本环境,用于创建动态交互式网页。这个源码可能用于...

    智能天下图片网站管理系统 v1.1 -ASP源码.zip

    《智能天下图片网站管理系统 v1.1 -ASP源码》是一款基于ASP编程语言开发的网站管理系统,专为图片网站的建设和管理设计。该系统能够帮助用户高效地组织、上传、展示和管理大量的图片资源,提供了丰富的功能和易用的...

    CKEditor_4.4.3full(带图片上传功能)

    版本4.4.3是其历史版本之一,提供了全面的文本编辑功能,并且在这个特定的版本中,特别强调了图片上传功能。这个特性使得用户在编辑文章或者创建网页内容时可以直接在编辑器内上传本地图片,极大地提高了工作效率。 ...

    shopex插件

    ShopEx是中国知名的电子商务平台之一,其插件系统是商家自定义功能、提升店铺体验的重要工具。标题中的"ShopEx插件"指的是针对ShopEx电子商务系统的各种扩展模块,这些插件可以增强ShopEx平台的功能,满足不同商家的...

    jsp源码上传下载WAP图铃下载系统-unimg

    - **微服务架构**: 近年来,随着云计算的发展,越来越多的企业选择采用微服务架构构建分布式系统,Java因其稳定性和丰富的生态系统成为首选的语言之一。 通过以上分析可以看出,“jsp源码[上传下载]WAP图铃下载系统...

    discuz论坛插件DZ插件 发帖多图自动分楼 1.0.4

    而"发帖多图自动分楼"插件解决了这个问题,当用户在一个帖子中上传多张图片时,该插件会自动将每张图片放置在不同的楼层,使帖子看起来更加整洁,也更便于其他用户浏览和评论。 此插件的核心功能包括: 1. 图片分...

    discuz论坛插件DZ插件 百度云网盘0.2用户组权限通用插件

    的插件系统是其核心竞争力之一,允许开发者通过编写插件来扩展论坛功能。这些插件可以实现各种定制化需求,如会员积分系统、活动报名、广告管理等。DZ插件通常包含PHP代码和CSS/JS前端资源,通过在论坛后台安装和...

    ECHSOP首页商品大图预览插件.rar

    标签“ECHSOP买个够”可能是指这个电商平台的品牌名称或者特色口号,它表明这个插件是专门为ECHSOP平台定制的,与“买个够”相关的购物体验可能是其设计目标之一,意在让用户在愉快的购物环境中尽情挑选商品。...

    JASFinder,开源免费的CKEditor图片上传组件,CKFinder的最佳代替品之一

    JASFinder旨在提供与CKFinder类似的功能,允许用户在CKEditor中便捷地上传、管理和浏览图片,同时避免了因使用CKFinder带来的成本问题。这款组件小巧轻便,但功能完备,满足了开发者对图片上传和管理的基本需求。 ...

    ASP实例开发源码—WindsPhoto (Z-Blog相册插件) v2.7.zip

    WindsPhoto相册插件就是这样的扩展之一,为Z-Blog增加了照片管理功能,让用户可以上传、分类和分享自己的照片集。 在这款插件v2.7版本中,我们可以推断开发者可能对原有的功能进行了优化和增强,比如提高图片处理...

    uploadifive上传插件

    综上所述,Uploadifive作为一个强大的上传插件,具备了现代Web应用所需的诸多功能,其灵活性和易用性使其成为开发者的首选之一。配合HTML5的相关特性,能够构建出高效、用户友好的文件上传系统。在实际项目中,...

    漂亮广告代码插件 for discuz 7.0.rar

    是一个开源的社区论坛软件,广泛应用于各类网站,版本7.0是其历史版本之一,具有稳定的性能和丰富的功能。 2. **广告插件** - 插件可以添加新的广告位置,支持多种广告格式(如图片、文字、Flash、视频等),并能...

Global site tag (gtag.js) - Google Analytics