Sé que esto es antiguo, y todas estas soluciones son trucos en torno a las precauciones de seguridad del navegador con un valor real.
Dicho esto, a partir de hoy, fileInput.click () funciona en Chrome actual (36.0.1985.125 m) y Firefox ESR actual (24.7.0), pero no en IE actual (11.0.9600.17207). La superposición de un campo de archivo con opacidad 0 en la parte superior de un botón funciona, pero quería un elemento de enlace como activador visible, y el subrayado de desplazamiento no funciona en ningún navegador. Parpadea y luego desaparece, probablemente el navegador piensa si el estilo de desplazamiento realmente se aplica o no.
Pero encontré una solución que funciona en todos esos navegadores. No afirmaré haber probado todas las versiones de cada navegador, o que sé que seguirá funcionando para siempre, pero parece que ahora satisface mis necesidades.
Es simple: coloque el campo de entrada del archivo fuera de la pantalla (posición: absoluto; arriba: -5000 px), coloque un elemento de etiqueta a su alrededor y active el clic en la etiqueta, en lugar del campo del archivo en sí.
Tenga en cuenta que el enlace debe estar programado para llamar al método de clic de la etiqueta, no lo hace automáticamente, como cuando hace clic en el texto dentro de un elemento de etiqueta. Aparentemente, el elemento de enlace captura el clic y no llega a la etiqueta.
Tenga en cuenta también que esto no proporciona una forma de mostrar el archivo seleccionado actualmente, ya que el campo está fuera de pantalla. Quería enviar de inmediato cuando se seleccionó un archivo, por lo que no es un problema para mí, pero necesitará un enfoque algo diferente si su situación es diferente.