我有以下形式和div和jQuery。选择要上传的文件时,文件名(带有扩展名)将输出到div,但是不适用于多个文件。选择多个文件时,仅输出第一个文件的名称。我到处寻找多个文件的解决方案,但找不到它。
<form id="myform" action="" method="post" enctype="multipart/form-data">
<input type="file" multiple name="files[]" />
<input type="submit" name="submit" value="Submit">
</form>
<div class="filename"></div>
$("input:file").change(function (){
var fileName = $(this).val();
$(".filename").html(fileName);
});
因此请记住,获取文件名列表(及其扩展名)应在选择文件后立即进行,而不是在提交表单后进行。
编辑:
在什么我下面说顶部,这种情况发生的另一件事是,当选择一个文件,则该文件显示了旁边的浏览按钮,但如果选择了多个文件名,它不显示各名文件,它只会显示“已选择#个文件”。用于Firefox,“#文件”用于chrome。我去看看IE做什么,那是不同的。它将一个或多个文件的路径放在“浏览”按钮旁边的文本字段中,所以我想这就是其他问题和答案的全部内容。我尝试了所有这些,但没有任何工作,即使其中有一个工作,这似乎也只是Internet Explorer的事情。我需要跨浏览器解决方案。
var fileName = $(this).val().split('\\').pop();
var fileName = $(this).val().split(',').pop();
var fileName = $(this).val().split(', ').pop();
/显示所以要回顾一下,选择多个文件时,每个文件的名称应该是输出。即使该其他解决方案可用于删除文件路径并仅保留文件名和扩展名(仅适用于IE),也无法显示所选的每个文件的名称。它只显示第一个文件。
编辑2:
以防万一您想知道,我也尝试过此操作,但这是不行的,但是看来此处发布的答案确实奏效,所以很好。
var fileName = document.getElementById("myfiles").files;
您可以使用files
fileinput
元素的属性来获取所选文件的列表。此属性包含一个FileList
可以像这样使用的对象:
$("input:file").change(function () {
var filenames = '';
for (var i = 0; i < this.files.length; i++) {
filenames += '<li>' + this.files[i].name + '</li>';
}
$(".filename").html('<ul>' + filenames + '</ul>');
});
参见演示。
如果只需要一个用空格或逗号分隔的文件列表,请执行以下操作:
$("input:file").change(function () {
var filenames = $.map(this.files, function (file) {
return file.name;
});
$(".filename").html(filenames.join(', '));
});
参见演示。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句