我有一个应用,用户选择要上传的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秒才能看到文件名。
在文件完全上传之前,选择要上传的文件时,文件名似乎不可用。
我认为延迟是因为需要先完全上传吗?
如果是这样,有没有办法获取显示文件名而无需先上传文件?
答案 0 :(得分:1)
在文件完全上传之前,选择要上传的文件时,文件名似乎不可用。
我认为延迟是因为需要先完全上传吗?
是的,如果您要在提交表单后显示文件名,则必须先上传文件。
如果是这样,有没有办法获取显示文件名而无需先上传文件?
是的,这可以使用纯Javascript完成,无需提交表单。
$('#id-of-file-input').on('change', function(ev) {
alert(ev.target.files[0].name);
});
根据您的总体目标,这可能是也可能不是您正在寻找的目标。