In older PrimeFaces versions, the simple upload used a plain html upload which cannot be styled. PrimeFaces 5.1 is one of the versions where the simple upload could not be styled directly.
The workaround in the fiddle, could work IF you use the right value in the for attribute (I tried it in the showcase).
Newer version however use a 'wrapping workaround', enabled by the skinSimple="true"
attribute that you seem to be thinking is also available in your version, which it is not. PrimeFaces generates the following html then as part of the upload widget:
<span class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-left">
<span class="ui-button-icon-left ui-icon ui-c ui-icon-plusthick"/>
<span id="j_idt88:j_idt89_label" class="ui-button-text ui-c">Choose</span>
<input id="j_idt88:j_idt89_input" name="j_idt88:j_idt89_input" aria-labelledby="j_idt88:j_idt89_label" type="file" />
</span>
This ui-button
can be style anyway you like, since it 'wraps` the real file input which is effectively invisible.
You can play with this in the PrimeFaces showcase