Браузерам не очень нравится, когда вы возитесь с вводом файлов, но это возможно. Я видел несколько приемов, но самый простой - это абсолютно позиционировать ввод файла поверх того, что вы хотите использовать в качестве кнопки, и установить его непрозрачность на ноль или почти на ноль. Это означает, что когда пользователь нажимает на изображение (или на то, что у вас под ним), он фактически нажимает на невидимую кнопку просмотра.
Например:
<input type="file" id="fileInput">
<img src="...">
#fileInput{
position: absolute;
opacity: 0;
-moz-opacity: 0;
filter: alpha(opacity=0);
}