Используйте непрозрачность CSS, чтобы сделать поле файла невидимым, но по-прежнему активным.
Также сделайте поле файла абсолютно позиционированным и используйте z-index, чтобы отобразить его над целевой кнопкой для щелчка пользователя.
Вы можете сослаться на имя файла через javascript и заполнить свой элемент DOM этим значением.
Возможно, вы захотите выполнить анализ текста, поскольку в некоторых версиях IE отображается полный путь к файлу.
Эта статья будет полезна: Стилизация поля поля
Я делал это много раз, и это работает довольно хорошо.
Также проверьте plupload . Это библиотека загрузки файлов, которая поддерживает HTML4, HTML5, Flash и многое другое. Это очень хорошо работает во многих сценариях.