rails中实现上传功能

简介:
在rails中实现上传文件的实现非常的简单
步骤:
通过一个例子来做(winxp,rails 1.2.5):
rails demo -d mysql
cd demo
mysqladmin -u root create demo_development
1.使用插件
安装attechment_fu插件:
ruby script/plugin install [url]http://svn.techno-weenie.net/projects/plugins/attachment_fu/[/url]

2.生成model

ruby script/generate model mugshot
3.编辑迁移文件001_create_mugshots.rb

class CreateMugshots < ActiveRecord::Migration
  
  def self.up
    create_table :mugshots do |t|
      t.column :parent_id,  :integer
      t.column :content_type, :string
      t.column :filename, :string    
      t.column :thumbnail, :string 
      t.column :size, :integer
      t.column :width, :integer
      t.column :height, :integer
    end
  end

  def self.down
    drop_table :mugshots
  end
end

----
4.执行迁移任务:
rake db:migrate
5.修改Model, mugshot.rb
class Mugshot < ActiveRecord::Base
  
  has_attachment :storage => :file_system
 

  validates_as_attachment

end


5.创建控制器:
ruby script/generate controller mugshots


class MugshotsController < ApplicationController
def new
  @mugshot = Mugshot.new
end

def create
  @mugshot = Mugshot.new(params[:mugshot])
  if @mugshot.save
    flash[:notice] = 'Mugshot was successfully created.'
    redirect_to :action=>"new"     
  else
    render :action => :new
  end
end

end


--创建new模板:
<%= error_messages_for :mugshot %>

<% form_for(:mugshot, :url => {:action=>"create"}, 
                      :html => { :multipart => true }) do |f| -%>
  <p>
    <label for="mugshot">Upload A Mugshot:</label>
    <%= f.file_field :uploaded_data %>
  </p>
  <p>
    <%= submit_tag 'Create' %>
  </p>
<% end -%>


--没什么问题应该可以运行了
ruby script/server
[url]http://localhost:3000/mugshots/new[/url]

上传的文件会保存在\public\mugshots中!




本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/102271,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
域名解析 网络协议 测试技术
[插件使用] SwitchHosts自动更新Github Hosts文件
[插件使用] SwitchHosts自动更新Github Hosts文件
1486 0
|
4月前
|
小程序 开发者
微信开发者工具如何集成SVN、同时解决集成SVN无效果的问题
这篇文章介绍了如何在微信开发者工具中集成SVN版本控制系统,并提供了解决集成后无效果问题的方法。
微信开发者工具如何集成SVN、同时解决集成SVN无效果的问题
|
7月前
从0-1实现文件下载CLI工具(2)
示例代码5 Proxy 部分资源访问不顺畅的时候,通常会走服务代理(🪜) 以谷歌的logo资源链接https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png 要让前面的方法downloadByUrl顺利执行,就需要其走代理服务
|
7月前
|
存储
从0-1实现文件下载CLI工具(3)
参数转换传递 下面是defaultCommand的逻辑,只需要将相关参数处理后透传给定义的download方法即可,option 不支持 number 所以需要对数字字符串做一些转换
|
7月前
|
存储
从0-1实现文件下载CLI工具(1)
前言 在日常学习/生活中,下载资源时,大部分情况是通过别人分享的资源站点,找到下载入口然后触发下载。 当资源通过url传播的时候,一般也是直接打开,通过浏览器触发下载。 资深的冲浪选手,一般会用一些客户端工具(还记得Win上的各种下载器),Mac上笔者有时候会使用 NeatDownloadManager,无 🪜 时也能拥有不错的下载速度
|
PHP
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
522 0
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
|
IDE 程序员 PHP
PhpStorm 中如何配置 SVN,详细操作方法
PhpStorm 中如何配置 SVN,详细操作方法
|
安全 Ubuntu Linux
linux服务器搭建git并配置秘钥及服务器端自动更新
git不同于svn,通常不需要建像svn那摩多的用户,基本上,大家共同使用一个用户,在各自的电脑上配置好公钥及私钥就可以了。 当然,如果你有需求需要多个用户协同管理git仓库,请移步《git多人协作用户权限配置》
575 0
linux服务器搭建git并配置秘钥及服务器端自动更新
|
Shell 应用服务中间件 网络安全
svn利用钩子脚本功能实现代码同步到web目录
一、hook简单介绍     为了方便管理员控制提交的过程 ,Subversion提供了hook机制。当特定的 事件发生时,相应的 hook会被调用,hook其实就相当于特定事件的处理函数。每个hook会得到与它所处理的事件相关的参数,根据 hook的返回值,Subversion会决定是否继续当前的提交过程     要实际安装一个可用的钩子,你需要在 repos/hooks目录下安装一些与钩子
4873 0
|
存储 Ruby
rails中使用carrierwave上传图片
1.安装 gem install carrierwave 2.更新 Gemfile gem 'carrierwave' 3.
886 0