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

rails上传文件_非插件

阅读更多

rails文件上传

 

除了通过paperclip等插件来上传文件之外,也可以不用插件,用ruby的File模块中的方法来实现文件上传。

 

一、控制器

 

   在控制器中加入以下两个方法,其中getfilename用来修改所上传的文件名称,

  在我所上传的文件中存在空格,会出现,系统找不到文件的错误,所以将文件中的空格去掉,

 

 def uploadfile(file)
    if !file.original_filename.empty?
      @filename=getfilename(file.original_filename)
#设置目录路径,如果目录不存在,生成新目录
 FileUtils.mkdir("#{RAILS_ROOT}/db/upload") unless File.exist?("#{RAILS_ROOT}/db/upload")
#写入文件      
File.open("#{RAILS_ROOT}/db/upload/#{@filename}", "wb") do |f|
        f.write(file.read)
      end
      return @filename
    end
  end

#文件名
 def getfilename(filename)
    if !filename.nil?
      filename.split(' ').to_s
    end
  end

 二、视图

form_tag的模板:

<% form_tag  :multipart => true  do %>
    <%= file_field_tag "photo" %>
  <% end %>

 form_for的模板:

 

<% form_for :user, @product, :html => { :multipart => true } do |f| %>
    <%= f.file_field :photo%>
  <% end %>

 

注意:两种表单multipart属性的写法,通过加这个属性使表单支持上传文件,不加这个属性或写的不对,会报下面的错   误.

NoMethodError (undefined method `original_filename' for " 20100824 1427.sql":String):
  app/controllers/admin/dbmanager_controller.rb:56:in `uploadfile'
  app/controllers/admin/dbmanager_controller.rb:32:in `restore'
  c:/ruby/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
  c:/ruby/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
  c:/ruby/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
  c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start'
  c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
  c:/ruby/lib/ruby/1.8/webrick/server.rb:95:in `start'
  c:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `each'
  c:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `start'
  c:/ruby/lib/ruby/1.8/webrick/server.rb:23:in `start'
  c:/ruby/lib/ruby/1.8/webrick/server.rb:82:in `start'

 读取图片时:

 <%= image_tag @product.photo.url %>
 

 

分享到:
评论

相关推荐

    rails_多文件上传

    Rails 多文件上传插件实现详解 Rails 多文件上传插件是基于 Ruby on Rails 框架的一款插件,旨在实现多文件的同时上传,控制文件的格式、数量,并且兼容多种浏览器,包括 IE6、7、Firefox 等。下面是对插件的详细...

    rails_plugins_presentation.pdf

    - **file_column (文件上传)**:此插件简化了文件上传过程,使得在Rails应用中处理文件上传变得更为直观和高效。它支持多种文件类型,并允许你自定义存储选项,如上传位置、文件名生成策略等。 - **acts_as_state_...

    rails_admin_image_manager:RailsAdmin和CKEditor的图像管理器

    将上传文件路径添加到您的.gitignore文件中 /public/rails_admin_image_manager 运行迁移 $ rails db:migrate SCOPE=rails_admin_image_manager 安装图像管理器CKEditor插件 mkdir -p app/assets/javascripts/...

    Rails的自动完成分页插件

    在这个场景中,我们关注的是Rails的自动完成、文件上传、分页以及上传进度管理相关的插件。让我们详细了解一下这些关键知识点: 1. **Rails 自动完成**: 自动完成是一种功能,允许用户在输入框中键入时提供预填...

    从图像 生成 Bootstrap配色方案的 Rails 应用程序_css_ruby_html_代码_下载

    9. **安全性**:考虑到用户可能会上传敏感图像,应用需要处理好文件上传的安全问题,如防止跨站脚本攻击(XSS)和文件包含漏洞。 10. **部署和持续集成**:最后,开发完成后,应用需要部署到服务器,可能涉及到...

    ruby rails_kindeditor(编译器)插件

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

    Rails里给文件上传添加progress_bar

    在Ruby on Rails(Rails)框架中,为文件上传添加进度条功能可以显著提升用户体验,让用户在上传大文件时能够清楚地看到进度,增加交互性。本文将深入探讨如何在Rails应用中实现这一功能。 首先,我们需要理解文件...

    jquery-fileupload-rails, 用于 Rails的jQuery文件上传集成.zip

    jquery-fileupload-rails, 用于 Rails的jQuery文件上传集成 Rails 文件上传jQuery-File-Plugin 是一个文件上传插件,由的Tschan 。 jQuery文件上传功能多文件选择。drag&拖放支持。进度栏和jQuery预览图像。 支持...

    Rails插件收集

    例如,`devise`插件提供了用户身份验证和注册功能,`bootstrap-sass`插件帮助引入Bootstrap CSS框架,`paperclip`或`carrierwave`用于文件上传,`activeadmin`则提供了一个后台管理界面。 在博文“Rails插件收集”...

    redmine系统agile敏捷插件安装包

    2. **数据库迁移**:在完成文件上传后,登录到Redmine的服务器,运行数据库迁移命令,这会将插件的数据库结构更新到当前版本。通常,命令可能是`rake redmine:plugins:migrate RAILS_ENV=production`,但请根据你的...

    ruby on rails 开发环境包(ruby1.8.7,rails2.2.3)

    在Rails 2.2.3时代,社区已经发展出很多插件和 gems(Ruby的扩展库),如Devise用于身份验证,CanCanCan进行授权管理,Paperclip或Carrierwave处理文件上传等。虽然这些可能需要适配老版本,但它们能极大地增强你的...

    Advanced Rails

    7. **Rails插件与Gem**:Rails社区提供了丰富的插件和Gem,如Devise用于身份验证,Paperclip或Carrierwave处理文件上传,Resque或Sidekiq实现后台任务队列。掌握如何选择和使用这些工具来扩展应用功能。 8. **Rails...

    rails 多图上传.txt

    在实现Rails应用中的多图上传功能时,通常需要借助于特定的插件或Gem来简化开发流程并增强功能。以下两个工具是必不可少的: 1. **Paperclip(Gem)** - **用途**:用于后台文件处理,是一款非常强大的工具,支持...

    jQuery File Upload文件上传插件 v10.32.0.zip

    jQuery File Upload是一款功能强大的文件上传插件,专为前端开发者设计,用于在Web应用程序中实现高效、用户友好的多文件上传功能。这个插件的版本是v10.32.0,它提供了丰富的特性,使得文件上传变得更加简单且可控...

    文件上传插件(jQuery-File-Upload)

    **jQuery-File-Upload** 是一个广泛使用的前端文件上传插件,它提供了丰富的功能和优秀的用户体验。这个插件是基于JavaScript库jQuery构建的,旨在简化文件上传操作,尤其是在需要批量上传、进度显示以及跨域上传的...

    具有多文件上传、拖拽、进度条和图像预览功能的文件上传插件

    具有多文件上传、拖拽、进度条和图像预览功能的文件上传插件,支持跨域、分块、暂停恢复和客户端图像缩放。可与任何服务端平台(如PHP、Python、Ruby on Rails、Java、Node.js、Go等)一起使用,支持标准的HTML表单...

    ruby on rails 2.3.5 api html版

    10. **插件和Gem**:Rails的生态系统中,Gem是第三方库的主要形式,它们提供了额外的功能,如Devise用于身份验证,CanCanCan用于授权,Paperclip或Carrierwave处理文件上传等。 11. **部署**:了解如何将Rails应用...

    Rails入门教程一(翻译).pdf

    此外,Rails提供了丰富的插件和gem(Ruby gem),例如Devise用于身份验证,CanCanCan处理授权,Paperclip或Carrierwave用于文件上传等,这些都能极大地增强应用的功能。 在开发过程中,Rails还提供了TDD(测试驱动...

    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