Это просто с jquery. Пример кода предложения Райана с небольшой модификацией.
Основной HTML:
<div id="image_icon"></div>
<div id="filename"></div>
<input id="the_real_file_input" name="foobar" type="file">
Обязательно установите стиль на входе, когда будете готовы: opacity: 0
Вы не можете установить display: none
, потому что он должен быть кликабельным. Но вы можете расположить его под «новой» кнопкой или заправить под что-нибудь еще с помощью z-index.
Настройте некоторые jquery для щелчка по реальному вводу при нажатии на изображение.
$('#image_icon').click(function() {
$('#the_real_file_input').click();
});
Теперь ваша кнопка работает. Просто измените и вставьте значение при изменении.
$('input[type=file]').bind('change', function() {
var str = "";
str = $(this).val();
$("#filename").text(str);
}).change();
Тах да! Возможно, вам придется проанализировать val () на что-то более значимое, но вы должны быть готовы.