我有一个表单(Rails),允许我使用file_field.加载.csv文件.在视图中:
<% form_for(:upcsv, :html => {:multipart => true}) do |f| %>
<table>
<tr>
<td><%= f.label("File:") %></td>
<td><%= f.file_field(:filename) %></td>
</tr>
</table>
<%= f.submit("Submit") %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
单击"提交"会将我重定向到另一个页面(create.html.erb).文件加载正常,我能够在第二页中正确阅读内容.我试图在第二页中显示.csv文件中的行数.
我的控制器(半伪代码):
class UpcsvController < ApplicationController
def index
end
def create
file = params[:upcsv][:filename]
...
#params[:upcsv][:file_length] = file.length # Show number of lines in the file
#params[:upcsv][:file_length] = file.size
...
end
end
Run Code Online (Sandbox Code Playgroud)
双方file.length并file.size返回"91"时,我的文件只包含7条线.在我阅读的Rails文档中,单击"提交"按钮后,Rails会创建上载文件的临时文件,其中params[:upcsv][:filename]包含临时/上载文件的内容,而不包含文件的路径.而且我不知道如何提取原始文件中的行数.获取文件中行数的正确方法是什么?
我的create.html.erb:
<table>
<tr>
<td>File length:</td>
<td><%= params[:upcsv][:file_length] %></td>
</tr>
</table> …Run Code Online (Sandbox Code Playgroud)