Рассматривается организация множественной загрузки файлов изображений с предпросмотром, используя JQuery и HTML5 File API.

HTML:
 
<input id="input_upload_file" type="file" name="files[]" multiple>
 
JQuery:
 
Обработчик выбора файлов:
 
$('#input_upload_file').change(function() { 
displayFiles(this.files); 
});
 
После выбора изображения должны отображаться списком в блоке user_img_file:
 
$('<ul id="img-list_file"></ul>').appendTo('#user_img_file');
 
Функция формирования списка изображений:
 
function displayFiles(files) { 
var imgList = $('ul#img-list_file');
 
$.each(files, function(i, file) {      
      if (!file.type.match(/image.*/)) {       
        return true;
      }           
      
var li = $('<li/>').appendTo(imgList);
      
var id_img=file.name.replace(/[\.,\:,\/, ,\(,\),=,?,-]/g,""); 
 
Формируем элемент списка, содержащий имя файла, кнопку удаления изображения из списка, размер файла изображения и само изображение:     
 
$('<div/>').text(file.name).appendTo(li).append('<img id="btn_remove_img_'+id_img+'" src="/img/btn_remove_img.jpg" alt="" class="btn">');    
       
$('#btn_remove_img_'+id_img).click(function() {       
var parent=$(this).parent().parent();       
parent.remove();   
}); 
   
$('<div/>').text(file.size+' байт').appendTo(li);
var img = $('<img/>').appendTo(li); 
li.get(0).file = file;
      
var reader = new FileReader();
reader.onload = (function(aImg) {
return function(e) {
aImg.attr('src', e.target.result);                
aImg.attr('width', 220);          
};
})(img);
reader.readAsDataURL(file);
});
}