i had problems with custom client side validation for <input type="file"/>
while using a fake button to trigger it and @Guillaume Bodi's solution worked for me (also with opacity: 0;
on chrome)
$("#MyForm").on("click", "#fake-button", function () {
$("#uploadInput").focus().trigger("click");
});
and css style for upload input
#uploadInput {
opacity: 0.0;
filter: alpha(opacity=0); /* IE lt 8 */
-ms-filter: "alpha(opacity=0)"; /* IE 8 */
-khtml-opacity: 0.0; /* Safari 1.x */
-moz-opacity: 0.0;
}