Saya tahu ini sudah lama, dan semua solusi ini adalah peretasan di sekitar tindakan pencegahan keamanan browser dengan nilai nyata.
Yang mengatakan, pada hari ini, fileInput.click () berfungsi di Chrome saat ini (36.0.1985.125 m) dan Firefox ESR saat ini (24.7.0), tetapi tidak di IE saat ini (11.0.9600.17207). Overlay bidang file dengan opacity 0 di atas tombol berfungsi, tapi saya ingin elemen tautan sebagai pemicu yang terlihat, dan melayang menggarisbawahi tidak cukup berfungsi di browser apa pun. Ini menyala kemudian menghilang, mungkin browser memikirkan apakah hover styling benar-benar berlaku atau tidak.
Tapi saya memang menemukan solusi yang berfungsi di semua browser itu. Saya tidak akan mengklaim telah menguji setiap versi setiap browser, atau saya tahu itu akan terus bekerja selamanya, tetapi tampaknya memenuhi kebutuhan saya sekarang.
Sederhana saja: Posisikan field input file di luar layar (position: absolute; top: -5000px), letakkan elemen label di sekitarnya, dan memicu klik pada label, alih-alih bidang file itu sendiri.
Perhatikan bahwa tautan memang perlu ditulis untuk memanggil metode klik label, itu tidak melakukannya secara otomatis, seperti ketika Anda mengklik teks di dalam elemen label. Tampaknya elemen tautan menangkap klik, dan itu tidak sampai ke label.
Perhatikan juga bahwa ini tidak memberikan cara untuk menampilkan file yang dipilih saat ini, karena bidangnya tidak aktif. Saya ingin mengirimkan segera ketika file dipilih, jadi itu bukan masalah bagi saya, tetapi Anda akan memerlukan pendekatan yang agak berbeda jika situasinya berbeda.