JSFiddle - React, Tailwind, and code Playground

by Michael Eugene Yuen

HTML

<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">
<div class="file_button">
  <input type="text" id="upload" />
  <div class="wrapper" for="upload">
    <input type="file" id="file">
    <i class="fa fa-folder-open"></i>
  </div>
</div>

<!-- Link to font-aswsome icons -->
<!-- https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css -->

CSS

.file_button {
  display: inline-block;
  padding: 0;
  margin: 0;
}

.wrapper {
  display: inline-block;
  position: relative;
  top: 10px;
  left: -5px;
  width: 28px;
  height: 28px;
  background-color: blue;
  color: #FFF;
  text-align: center;
  border-top-right-radius: 3px;
  border-bottom-right-radius: 3px;
  cursor: pointer;
  overflow: hidden;
}

#upload {
  margin: 0;
  height: 22px;
}

#file {
  display: inline-block;
  opacity: 0;
  position: absolute;
  top: 0;
  left: 0;
  width: 20px;
  height: 20px;
}

.wrapper i.fa {
  margin-top: 4px;
  cursor: pointer;
}

JavaScript

$('#file').change(function(){
	var filename = $('#file').val();
	$('#upload').val(filename);
});