2

我有以下代码:

<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>

这是一个多重上传输入。当我选择“x”图片时,它会为它们创建缩略图。这很好用,但我想知道如何获取文件名(如果图片名为“sun.jpg”,我想获取“sun”),并将它们附加到图片下方。我试过这个:

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

但是e.nameundefined

这是一切的小提琴:https ://jsfiddle.net/ugs6rzqx/1/

任何帮助,将不胜感激。谢谢。

4

3 回答 3

5

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

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

$('#thumbs').append('<img src="' + e.target.result + '" width="20%"><p>'+file.name+'</p>')
于 2016-02-02T20:16:13.487 回答
4

如果您只想要名称:

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

工作小提琴:https ://jsfiddle.net/robertrozas/ugs6rzqx/3/

于 2016-02-02T20:21:34.663 回答
3

利用

file.name

这是你的小提琴:https ://jsfiddle.net/ugs6rzqx/2/

于 2016-02-02T20:16:15.133 回答