Теоретически должно работать.
<div id="files">
<input type="file" multiple accept="image/*"/>
</div>
<div id="result"></div>
<style>
.img_preview{display:inline-block;}
.thumbnail{max-width:100px;}
#files input{display:none;}
#files input:last-child{display:block;}
</style>
<script>
(function(){
if(!window.File || !window.FileList || !window.FileReader)
return console.log("Your browser does not support File API");
document.getElementById("files").addEventListener("change", function(event) {
var clone = event.target.cloneNode(),
files = event.target.files,
output = document.getElementById("result");
clone.value=null;
this.appendChild(clone);
this.focus();
for(var i = 0; i < files.length; i++) {
var file = files[i];
if(!file.type.match('image'))
continue;
var picReader = new FileReader();
picReader.addEventListener("load", function(event) {
var picFile = event.target;
var div = document.createElement("div");
div.className = 'img_preview';
div.innerHTML = "<img class='thumbnail' src='"
+ picFile.result + "'" + "title='" + picFile.name + "'/>";
output.insertBefore(div, null);
});
picReader.readAsDataURL(file);
}
});
})();
</script>