如何从多输入中的 FileReader 函数获取文件名?

How can I get the filename from the FileReader function in a Multiple Input?

我有以下代码:

<input type="file" multiple='multiple'>
<div id="thumbs"></div>

<script type="text/javascript">
    $('input[type="file"]').change(function() {
    $('#thumbs').html('');
    $.each(this.files, function() {
    readURL(this);
 })
});

function readURL(file) {
    var reader = new FileReader();
    reader.onload = function(e) {
    $('#thumbs').append('<img src="' + e.target.result + '" width="20%">')
    $('#quantity').text(i)
  }
  reader.readAsDataURL(file);
}
</script>

这是一个多重上传输入。当我 select 'x' 图片时,它会为它们创建缩略图。这非常有效,但我想知道如何获取文件名(如果图片名为 "sun.jpg",我想获取 "sun"),并将它们附加到图片下方。我试过这个:

$('#thumbs').append('<img src="' + e.target.result + '" width="20%"><p>'+e.name+'</p>')

但是 e.nameundefined

这是所有内容的 fiddle:https://jsfiddle.net/ugs6rzqx/1/

如有任何帮助,我们将不胜感激。谢谢。

FileReader 的事件对象在有关文件的详细信息方面很薄弱。 在回调中,您可以访问普通的 File 对象,它仍然具有所有文件元信息,如名称、日期和大小。

您的代码只需要使用 file 而不是 e

$('#thumbs').append('<img src="' + e.target.result + '" width="20%"><p>'+file.name+'</p>')

使用

file.name

这是你的fiddle:https://jsfiddle.net/ugs6rzqx/2/

如果你只想要名字:

$('#thumbs').append('<img src="' + e.target.result + '" width="20%"><p>'+file.name.split('.')[0]+'</p>')

工作fiddle:https://jsfiddle.net/robertrozas/ugs6rzqx/3/