我想为图片上传制作自定义按钮。我可以通过下面的演示得到这个结果:
https://jsfiddle.net/algometrix/fgrbyo4z/
但我如何显示之后选择的文件名?或者甚至可能是图像的缩略图?就像我从弹出窗口的窗口中选择一个文件后,我希望它在我选择后在页面上显示“文件名”。
Javascript - 如果有人可以在这方面提供帮助,那么jQuery完全是一个选择。
HTML
<div>
<div style="display:block;text-align:center;margin-top:20%;">
<label for="files"> <span class="btn">Select Image</span></label>
<input style="visibility: hidden; position: absolute;" id="files" class="form-control" type="file" name="files">
</div>
</div>
CSS
.btn {
font-family: Arial;
color: #ffffff;
font-size: 20px;
background: #3f88b8;
padding: 10px 20px 10px 20px;
text-decoration: none;
}
.btn:hover {
background: #3cb0fd;
background-image: -webkit-linear-gradient(top, #3cb0fd, #3498db);
background-image: -moz-linear-gradient(top, #3cb0fd, #3498db);
background-image: -ms-linear-gradient(top, #3cb0fd, #3498db);
background-image: -o-linear-gradient(top, #3cb0fd, #3498db);
background-image: linear-gradient(to bottom, #3cb0fd, #3498db);
text-decoration: none;
}
答案 0 :(得分:7)
通过添加javascript,我们可以在输入上查看change
事件,并将名称放在页面上。请注意这些次要的HTML更改:
<div class="file-upload">
<label for="upload-1" class="btn">Upload</label>
<input type="file" id="upload-1">
<p class="file-name">Please select a file.</p>
</div>
使用这个jQuery:
jQuery(function($) {
$('input[type="file"]').change(function() {
if ($(this).val()) {
var filename = $(this).val();
$(this).closest('.file-upload').find('.file-name').html(filename);
}
});
});
答案 1 :(得分:3)
只需点按文件元素的更改事件:
var file = document.getElementById("files");
file.addEventListener("change", function(){ alert(this.value); });
显示在这个小提琴中:https://jsfiddle.net/pbg44bqu/12/
答案 2 :(得分:1)
此脚本会在上传后立即显示图片:
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#img').show().attr('src', e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
$("#files").change(function(){
readURL(this);
});