Aquí lo hice con jQuery usando FileReader API.
Marcado HTML:
<input id="fileUpload" type="file" multiple />
<div id="image-holder"></div>
jQuery:
Aquí, en el código jQuery, primero verifico la extensión del archivo. es decir, un archivo de imagen válido para ser procesado, luego verificará si la API de FileReader compatible con el navegador es sí, luego solo se procesa; de lo contrario, se muestra el mensaje respetado
$("#fileUpload").on('change', function () {
//Get count of selected files
var countFiles = $(this)[0].files.length;
var imgPath = $(this)[0].value;
var extn = imgPath.substring(imgPath.lastIndexOf('.') + 1).toLowerCase();
var image_holder = $("#image-holder");
image_holder.empty();
if (extn == "gif" || extn == "png" || extn == "jpg" || extn == "jpeg") {
if (typeof (FileReader) != "undefined") {
//loop for each file selected for uploaded.
for (var i = 0; i < countFiles; i++) {
var reader = new FileReader();
reader.onload = function (e) {
$("<img />", {
"src": e.target.result,
"class": "thumb-image"
}).appendTo(image_holder);
}
image_holder.show();
reader.readAsDataURL($(this)[0].files[i]);
}
} else {
alert("This browser does not support FileReader.");
}
} else {
alert("Pls select only images");
}
});
Artículo detallado: Cómo obtener una vista previa de la imagen antes de cargarla, jQuery, HTML5 FileReader () con demostración en vivo