`
nnnnon
  • 浏览: 150967 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

rails 上传图片

    博客分类:
  • RORs
阅读更多

ruby 代码
  1. class CreatePictures < ActiveRecord::Migration  
  2.   def self.up  
  3.     create_table :pictures do |t|  
  4.     t.column :comment:string:limit=>100  
  5.     t.column :name:string:limit=>200  
  6.     t.column :content_type:string:limit=>100  
  7.     t.column :title:binary  
  8.     end  
  9.   end  
  10.   
  11.   def self.down  
  12.     drop_table :pictures  
  13.   end  
  14. end  


ruby 代码
  1. class RenameColumnData < ActiveRecord::Migration  
  2.   def self.up  
  3.   rename_column :pictures,:title:data  
  4.   end  
  5.   
  6.   def self.down  
  7.   rename_column :pictures,:data:title  
  8.   end  
  9. end  

以上是通过migration建立相应的数据表。

 

建立controller:

ruby 代码
  1. class UploadController < ApplicationController  
  2.   def get  
  3.     @picture = Picture.new  
  4.   end  
  5. end  

 

 

建立get template:

ruby 代码
  1. <%= error_messages_for("picture") %>  
  2. <%= form_tag({:action => 'save'}, :multipart => true) %>  
  3. Comment: <%= text_field("picture""comment") %>  

  4.   
  5. Upload your picture: <%= file_field("picture""picture") %>  

  6.   
  7. <%= submit_tag("Upload file") %>  
  8. <%= end_form_tag %>  
  9.   
  10.    

建立model:

ruby 代码
  1. class Picture < ActiveRecord::Base  
  2.   validates_format_of :content_type:with => /^image/,  
  3.     :message => "--- you can only upload pictures"  
  4.   def picture=(picture_field)  
  5.     self.name = base_part_of(picture_field.original_filename)  
  6.     self.content_type = picture_field.content_type.chomp  
  7.     self.data = picture_field.read  
  8.   end  
  9.   def base_part_of(file_name)  
  10.     name = File.basename(file_name)  
  11.     name.gsub(/[^\w._-]/, '')  
  12.   end  
  13. end  

 

扩充controller,添加save action:

ruby 代码
  1. def save  
  2.   @picture = Picture.new(params[:picture])  
  3.   if @picture.save  
  4.   
  5.     redirect_to(:action => 'show', :id => @picture.id)  
  6.   else  
  7.     render(:action => :get)  
  8.   end  
  9. end  

 

扩充controller,添加picture action:

ruby 代码
  1. def picture  
  2.   @picture = Picture.find(params[:id])  
  3.     send_data(@picture.data,  
  4.     :filename => @picture.name,  
  5.     :type => @picture.content_type,  
  6.     :disposition => "inline")  
  7. end  

 

 

定义show action:

ruby 代码
  1. def show  
  2.   @picture = Picture.find(params[:id])  
  3. end  

 

 

 

显示图片:

ruby 代码
  1. <%= @picture.comment %>

      

 

 注:引自Dave Thomas的《Agile Web Development with Rails》

分享到:
评论

相关推荐

    rails上传文件_paperclip

    在Ruby on Rails框架中,Paperclip是一个非常流行的用于处理文件上传的库。它提供了一种简单而优雅的方式来管理和处理模型中的附件,如图片、文档等。Paperclip与ActiveRecord紧密集成,使得在Rails应用中添加文件...

    rails上传图片代码实例

    今天讲解一下rails的图片上传,就是最平常的上传图片 这里的rails版本2.3.5 首先新建一个write_pic model内容如下: 代码如下:class WritePicrequire “RMagick”require “uuid”def self.write(pic_data,ori_name,...

    rails_多文件上传

    2. 文件格式控制:插件可以控制文件的格式,限制上传的文件类型,例如限制上传图片、文档、音频、视频等。 3. 文件数量控制:插件可以控制上传文件的数量,限制上传文件的个数。 4. 多浏览器兼容:插件兼容多种...

    rails 文件上传

    在Ruby on Rails框架中,文件上传是一个常见的需求,例如用户头像、产品图片或文档的上传。本篇文章将深入探讨Rails中的文件上传机制,并结合给定的“rails 文件上传”主题,提供关于如何在Rails应用中实现文件上传...

    Rails项目源代码

    这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...

    rails 多图上传.txt

    ### Rails多图上传知识点详解 #### 一、所需插件及Gem包介绍 在实现Rails应用中的多图上传功能时,通常需要借助于特定的插件或Gem来简化开发流程并增强功能。以下两个工具是必不可少的: 1. **Paperclip(Gem)**...

    RailsSpace

    这不仅涉及图片的上传和存储,还需要考虑到图片裁剪和缩放等图像处理技术的应用。 ##### 5.5 邮件集成 第十三章“Email”介绍了如何将电子邮件集成到Rails应用中,以便于发送激活邮件、重置密码邮件等。本章将介绍...

    Ruby-Ruby绑定ImageMagick

    Ruby是一种强大的动态编程语言,广泛应用于Web开发、脚本编写以及各种高级编程任务。...无论是Web应用中的图像上传处理,还是独立的图像处理脚本,RMagick都能满足需求,帮助你实现高效且高质量的图像处理功能。

    ruby on rails最新版

    例如,Devise用于用户认证,CanCanCan用于授权管理,Paperclip或Carrierwave处理文件上传,Stripe或PayPal集成支付功能,以及各种数据分析和报表生成库等。 总的来说,这个压缩包对于Ruby on Rails的初学者或希望...

    rails ajax提交文件或图片

    在本篇博文中,我们将深入探讨如何在Rails中利用AJAX提交文件或图片。 首先,我们需要设置一个表单来允许用户上传文件。在Rails中,`form_for`辅助方法可以帮助我们创建一个表单,但为了支持AJAX提交,我们需要将其...

    Rails 3 in Action

    - 实现用户可以上传图片、文档等文件的功能。 - 需要考虑安全性问题,防止恶意文件上传。 - 可以使用第三方服务,如 Amazon S3 来存储文件。 #### 八、状态跟踪 第十章关注 **状态跟踪**,即在用户会话期间保存...

    Rails实现的简历系统

    2. **图片上传**:在Rails中,我们可以利用ActiveStorage组件来处理用户上传的图片。ActiveStorage与云存储服务如Amazon S3或Google Cloud Storage集成,方便地处理文件上传、存储和检索。它还提供了一套内置的图像...

    学习Ruby on Rails进行Web开发(英文版)

    书中涵盖了Rails的MVC架构、Gems的使用、Bootstrap的集成、用户认证、数据库操作等重要知识点,同时还介绍了如何使用Paperclip上传图片、使用Amazon S3存储图片以及如何对网站进行样式和功能的优化

    应用rails进行敏捷web开发

    10. **Rails社区和生态**:Rails有庞大的开发者社区,提供了众多高质量的开源gem,如Devise(用户认证)、Paperclip或Carrierwave(文件上传)、Pundit或CanCanCan(授权)、Resque或Sidekiq(后台任务处理)等。...

    ruby rails_kindeditor(编译器)插件

    2. **图片和文件上传**:`rails_kindeditor` 支持图片和文件的上传功能。你需要配置一个专门用于存储这些上传文件的目录,并在服务器端处理文件上传的逻辑,确保安全性。 3. **安全考虑**:由于富文本编辑器允许...

    批量上传相册功能源码(包含各种语言)

    批量上传相册功能是许多网站和应用程序中常见的一项功能,它允许用户一次性上传多张图片到他们的相册,极大地提高了用户交互性和效率。本资源提供了一系列的源代码,覆盖了多种编程语言,使得开发者能够快速集成批量...

    Rails应用程序样本AWSOpsWorksRailsDemoApp.zip

    在Rails应用中,这种类型的应用通常会涉及用户上传图片、查看图片、评论图片等功能,需要处理图像存储(例如使用S3服务)、数据库设计(如用户、照片、评论表的结构)以及前后端交互逻辑。此外,由于是与OpsWorks...

    awesome-rails-gem-zh_CN, Rails 常用 Gem 列表 - Awesome Rails Gem 中文版.zip

    4. **Paperclip** 和 **CarrierWave**:这两个Gem用于文件上传,支持图片处理和存储服务集成。 5. **Pundit**:轻量级的授权库,用于创建更细粒度的权限控制,相比CanCanCan更简单。 6. **Bootstrap-Sass** 和 **...

Global site tag (gtag.js) - Google Analytics