从file_upload_tag获取文件名很慢。

时间:2017-12-13 15:59:28

标签: ruby-on-rails

我有一个应用,用户选择要上传的CSV文件。我想在选择文件后使用jquery显示文件名。但是,似乎Rails尝试在我可以获取文件名之前加载整个CSV。

使用

选择文件

现在,我用按钮调用刷新。

<%= javascript_tag do %>

$(document).ready(function(){
    $("button").click(function(){
        $("#show_file_to_upload").load("/data_updates/selected_file");
    });
});
<% end %>

file_upload_tag中的文件名通过

传递给partial
<%= render :partial => "/data_updates/selected_file",
 locals: { file_name: params[:data_update].original_filename} %>

如果我选择一个8 kb的文件,结果几乎是瞬间完成的。但是,如果我选择一个60 kb的文件,我需要大约30秒才能看到文件名。

在文件完全上传之前,选择要上传的文件时,文件名似乎不可用。

我认为延迟是因为需要先完全上传吗?

如果是这样,有没有办法获取显示文件名而无需先上传文件?

1 个答案:

答案 0 :(得分:1)

  

在文件完全上传之前,选择要上传的文件时,文件名似乎不可用。

     

我认为延迟是因为需要先完全上传吗?

是的,如果您要在提交表单后显示文件名,则必须先上传文件。

  

如果是这样,有没有办法获取显示文件名而无需先上传文件?

是的,这可以使用纯Javascript完成,无需提交表单。

$('#id-of-file-input').on('change', function(ev) {
  alert(ev.target.files[0].name);
});

根据您的总体目标,这可能是也可能不是您正在寻找的目标。