Вы можете проверить расширение файла на стороне клиента и затем решить, следует ли инициировать отправку для формы следующим образом (стиль jQuery):
<script>
$(function(){
$('#fileDivId').change(function(){
$this = $(this);
if ($.inArray($this.val().split('.').pop().toLowerCase(), ['jpg', 'jpeg', 'png', 'gif']) != -1) {
$this.parent().trigger('submit');
}
});
});
</script>
<form action="post.php" method="POST">
<input type="file" id="fileDivId">
</form>
Но здесь есть несколько слабых мест:
1) Вам все еще нужно очистить изображения на стороне сервера
2) Не совсем уверен, как работает $ ('inputId'). Val (), когда тип ввода "file". Например, Firefox 4 возвращает имя файла, но если я правильно помню, IE вернет полный путь к файлу (C: \ Docs \ Img \ etc), и, кроме того, он может быть отключен в некоторых браузерах по соображениям безопасности.
3) Получение части расширения в моем коде не идеально - более сложная ситуация: пользователь выбирает файл C: \ Doc.img \ file_no_ext, он возвращает «img \ file_no_ext»