如何在Rails 3中解析上传的文本文件

时间:2011-02-19 20:31:39

标签: html ruby-on-rails ruby ruby-on-rails-3

我有一个有文件输入的表格;

<%form_tag '/dboss/newsbsresult' , :remote=>true do %>
    <input type="file" id="examsendbutton" name="txtsbs"/><br/>
    <input type="submit" value="Gonder">
<%end%>

在这里,我希望用户选择我尝试在服务器上解析和使用的txt文件,但我无法用此代码捕获上传的文件,

def newsbsresult
        @u = params[:txtsbs] #Or params[:txtsbs].to_s
        p @u
end

实现这一目标的真正方法是什么?

3 个答案:

答案 0 :(得分:2)

AJAX请求不支持开箱即用的文件上传 - 或者根本不支持技术上传。这是因为JavaScript无法直接从文件字段中读取数据(HTML 5除外)。有许多方法可以进行类似AJAX的文件上传(例如file-uploaderuploadify,在较旧的技术中),但Rails不支持这些只需设置:remote => true - 你必须使用其他/额外的东西让它发挥作用。

简单的解决方案是删除 :remote => true添加 :multipart => true


进一步阅读:

答案 1 :(得分:0)

尝试将:multipart => true添加到form_tag

<% form_tag '/dboss/newsbsresult' , :remote=>true, :multipart => true do %>

答案 2 :(得分:0)

根据您的问题,如果我的理解是正确的。您想要从上传文件中读取数据。 我遇到类似的事情,需要在我的Rails应用程序的另一个文本区域显示上传的文本。

这就是我所做的。

视图

  1 <%= form_tag('/dboss/newsbsresult' , :multipart => true) do %>  
  2   <input type="file" id="examsendbutton" name="txtsbs"/><br/>
  3   <input type="submit" value="Gonder">
  4 <% end %>

控制器

  1   def index
  2     if (params[:txtsbs].present?)
  3       @upload_text = params[:txtsbs].read
  4       render :text => @upload_text
  5    end
  6   end

路线

  match 'dboss/newsbsresult' => 'user#index'