【问题标题】:How to parse an uploaded txt file in Rails3如何在 Rails3 中解析上传的 txt 文件
【发布时间】:2011-02-19 20:31:39
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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


    进一步阅读:

    【讨论】:

      【解决方案2】:

      尝试将:multipart =&gt; true 添加到您的form_tag

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

      【讨论】:

      • Multipart 是启用文件上传的http头
      • multipart/form-data 是允许文件上传的表单数据的不同编码。这很重要,因为文件有额外的元数据,如内容类型、文件名等。请参阅:w3.org/TR/html401/interact/forms.html#h-17.13.4.2
      【解决方案3】:

      根据您的问题,如果我的理解是正确的。您想从上传文件中读取数据。 我遇到了类似的事情,需要在我的 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'
      

      【讨论】:

        猜你喜欢
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 2016-05-11
        • 2017-08-07
        • 1970-01-01
        • 1970-01-01
        • 2011-08-01
        • 1970-01-01
        相关资源
        最近更新 更多