I would like to make custom button for an image upload. I am able to get this result with the demo below:
https://jsfiddle.net/algometrix/fgrbyo4z/
But HOW CAN I DISPLAY the file name selected after? Or maybe even a thumbnail of an image if possible? Like after I choose a file from the window that pops open I would like it to display 'the file name' on the page after I selected it.
Javascript - jQuery is totally an option here if anyone can help in that area.
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;
}
Use a label tag and point its for attribute to the id of the default HTML file upload button. By doing this, clicking the label element in the browser toggles the default HTML file upload button (as though we clicked it directly).
With the addition of javascript, we can just watch for the change
event on the input, and put the name on the page. Please note these minor HTML changes:
<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>
With this jQuery:
jQuery(function($) {
$('input[type="file"]').change(function() {
if ($(this).val()) {
var filename = $(this).val();
$(this).closest('.file-upload').find('.file-name').html(filename);
}
});
});
Working Fiddle
Just tap into the change event of the file element:
var file = document.getElementById("files");
file.addEventListener("change", function(){ alert(this.value); });
Shown in this fiddle: https://jsfiddle.net/pbg44bqu/12/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With