Styling & Customizing File Inputs the Smart Way
Osvaldas Valutis is right, using the to trigger the native browser functionality is the way to go. Then style up the label as needed, enhancing with some JavaScript if you like. Same concept as the checkbox hack.
Direct Link to Article — Permalink
Styling & Customizing File Inputs the Smart Way is a post from CSS-Tricks