2007-04-10

Rails文件上传

关键字: rails 文件上传
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 %>
评论
hideto 2008-01-31   回复
isaiah 2008-01-31   回复
按照你说的方法在上传中文文件有2个问题
1 上传到服务器磁盘上的文件名是乱码,但页面上正确显示上传后的文件名
2 有时侯上传一些中文文件时会出错,如下
Invalid argument - ./public/upload/2007_05_10_00_16_18_xx县评估提纲.doc

请指点一下,谢谢:)[i]
[/i]
这是因为你的public目录下没有建立upload文件夹
qingyong 2007-07-28   回复
谢谢你的回复
hideto 2007-05-24   回复
1,我测试过了没有中文乱码问题,不知道你所说的是具体什么问题。
2,当然需要Ruby的ftp上传library之类的东西来上传文件到服务器,如Class: Net::FTP类
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}"吗?
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用来保存文件数据
tingzting 2007-05-23   回复
使用楼主的代码,上传文件没有问题,但是我想把文件放在数据库中,应该怎么实现?
leojing 2007-05-22   回复
我现在也正郁闷这个问题呢,请高手解答一下。
zs0723 2007-05-09   回复
按照你说的方法在上传中文文件有2个问题
1 上传到服务器磁盘上的文件名是乱码,但页面上正确显示上传后的文件名
2  有时侯上传一些中文文件时会出错,如下
  Invalid argument - ./public/upload/2007_05_10_00_16_18_xx县评估提纲.doc

请指点一下,谢谢:)
发表评论

您还没有登录,请登录后发表评论

hideto
搜索本博客
我的相册
A6bdc31c-c66e-468e-961e-9cc721e82adc-thumb
screenshot
共 1 张
存档
最新评论