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

Rails文件上传

    博客分类:
  • Ruby
阅读更多
1,upload_controller.rb
class UploadController < ApplicationController

   before_filter :configure_charsets

   def configure_charsets
    @headers["Content-Type"]="text/html;charset=utf-8"
  end      

  def upload
  end

  def uploadFile(file)
    if !file.original_filename.empty?
      @filename=getFileName(file.original_filename) 
      File.open("#{RAILS_ROOT}/public/upload/#{@filename}", "wb") do |f|
      f.write(file.read)
      end
      return @filename
    end
  end

  def getFileName(filename)
    if !filename.nil?
      Time.now.strftime("%Y_%m_%d_%H_%M_%S") + '_' + filename
    end
  end

  def save
    unless request.get?
      if filename=uploadFile(params[:file]['file'])
        render :text=>filename
      end
    end
  end 

end


2,upload.rhtml
<h1>Upload File</h1>

<%= form_tag({:action => 'save'}, :multipart => true) %>
Upload your file: <%= file_field("file", "file") %>
<br/>
<%= submit_tag("Upload file") %>
<%= end_form_tag %>
分享到:
评论
13 楼 resembling 2010-03-09  
文件名中文乱码转换
File.open("#{RAILS_ROOT}/public/upload/#{Iconv.iconv("GB2312//IGNORE","UTF-8//IGNORE",@filename)}", "wb") do |f| 
12 楼 hideto 2009-03-13  
zmfbird 写道

用你的代码,报错undefined method `original_filename'。请问怎么回事?

不推荐你用这些代码,现在有成熟的Rails文件上传plug in
11 楼 zmfbird 2009-03-13  
用你的代码,报错undefined method `original_filename'。请问怎么回事?
10 楼 the_e 2008-10-28  
使用:filename这个自动更改文件名的功能的时候有问题,hideto遇到没呢!?我用Time.now作为新上传文件的名称,但存到数据库里的和传上去的总是不一致!咋整的呢!?
9 楼 hideto 2008-01-31  
8 楼 isaiah 2008-01-31  
按照你说的方法在上传中文文件有2个问题
1 上传到服务器磁盘上的文件名是乱码,但页面上正确显示上传后的文件名
2 有时侯上传一些中文文件时会出错,如下
Invalid argument - ./public/upload/2007_05_10_00_16_18_xx县评估提纲.doc

请指点一下,谢谢:)[i]
[/i]
这是因为你的public目录下没有建立upload文件夹
7 楼 qingyong 2007-07-28  
谢谢你的回复
6 楼 hideto 2007-05-24  
1,我测试过了没有中文乱码问题,不知道你所说的是具体什么问题。
2,当然需要Ruby的ftp上传library之类的东西来上传文件到服务器,如Class: Net::FTP类
5 楼 tingzting 2007-05-23  
我在数据库中建了一张表,把文件的名称与相关信息写到数据库的表里面。
1、工程文件使用的编码以及rhtml文件使用的编码格式都是utf-8,并且控制器中含有一下代码,
before_filter :configure_charsets     
    
def configure_charsets     
  @headers["Content-Type"]="text/html;charset=utf-8"    
end       
但还是有部分文件不能成功上传。

2.如果我想将文件上传到一个文件服务器,而不是放在本地,应该如何操作,是修改"#{RAILS_ROOT}/public/upload/#{@filename}"吗?
4 楼 hideto 2007-05-23  
1,
before_filter :configure_charsets   
  
def configure_charsets   
  @headers["Content-Type"]="text/html;charset=utf-8"  
end     

这段代码就是控制页面的编码的,你将Rails程序统一使用utf-8编码所有文件,就不会出现乱码现象。所以你可能需要将upload_controller.rb和upload.rhtml这两个文件的编码改为utf-8

2,上传文件不要放到数据库,不然数据库容易崩溃
如果你一意孤行,可以定义一个Model,其中有一个字段data的类型为blob用来保存文件数据
3 楼 tingzting 2007-05-23  
使用楼主的代码,上传文件没有问题,但是我想把文件放在数据库中,应该怎么实现?
2 楼 leojing 2007-05-22  
我现在也正郁闷这个问题呢,请高手解答一下。
1 楼 zs0723 2007-05-09  
按照你说的方法在上传中文文件有2个问题
1 上传到服务器磁盘上的文件名是乱码,但页面上正确显示上传后的文件名
2  有时侯上传一些中文文件时会出错,如下
  Invalid argument - ./public/upload/2007_05_10_00_16_18_xx县评估提纲.doc

请指点一下,谢谢:)

相关推荐

    rails 文件上传

    在Ruby on Rails框架中,...通过理解以上知识点,你将能够构建一个功能完善的Rails文件上传系统,确保用户能安全、便捷地上传和管理他们的文件。在实际项目中,还需要考虑性能优化、错误处理和用户体验等方面的问题。

    rails上传文件_paperclip

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

    rails_多文件上传

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

    Rails中上传文件保存中文文件名乱码

    在Rails框架中处理文件上传时,经常会遇到一个问题,那就是当用户尝试上传包含中文名称的文件时,文件名可能会出现乱码。这个问题主要是由于字符编码不兼容导致的。Rails默认使用UTF-8编码,但文件系统或者某些外部...

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

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

    rails-uploader:用jQuery-File-Upload实现Rails文件上传

    用于RailsHTML5文件上传器这个gem使用来上传文件。安装在Gemfile中: gem 'rails-uploader'在航线上: mount Uploader :: Engine =&gt; '/uploader' 迁移ActiveRecord: $ bundle exec rails g uploader:install用法...

    Rails里给文件上传添加progress_bar

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

    升级版本后Rails的文件上传

    在Ruby on Rails框架中,文件上传是一个常见的需求,特别是在应用的升级过程中,处理文件上传的策略可能会有所变化。Rails提供了多种处理文件上传的方法,包括直接存储到本地文件系统、使用云存储服务(如Amazon S3...

    rails ajax提交文件或图片

    通过这种方式,我们可以实现无刷新的文件上传,同时保持页面的互动性和用户体验。当然,实际应用中可能还需要考虑错误处理、文件大小限制、文件类型验证等其他细节。在开发过程中,利用`source code`和`tools`来调试...

    使用Rails上传和转换视频

    在Rails中,最常用的文件上传库是Paperclip和CarrierWave,但现在更推荐使用ActiveStorage,这是Rails 5.2及更高版本内置的一个功能。ActiveStorage直接与数据库交互,方便管理和存储文件,同时支持通过第三方服务如...

    Rails项目源代码

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

    rails-ipfs-pics:使用ipfs的基本Rails文件上传应用程序

    自述文件 该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列,缓存服务器,搜索引擎等) 部署说明… 如果您...

    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...

    ruby on rails最新版

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

    Rails的自动完成分页插件

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

    ruby on rails 2.3.5 api html版

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

Global site tag (gtag.js) - Google Analytics