多个文件上传并使用文件阅读器进行预览
window.preview = function (input){ if(input.files && input.files[0]) { var reader = new FileReader(); reader.readAsDataURL(input.files[0]); reader.onload = function(e){ $("#previewImg").append(""); } } }
我有一个使用文件阅读器预览图像的function,它在单个文件中工作正常。
但是我尝试实现多个文件。
我的问题是如何通过文件阅读器获取输入文件数组,循环文件并附加img
Javascript解决方案 小提琴演示
纯JavaScript:
function handleFileSelect(event) { //Check File API support if (window.File && window.FileList && window.FileReader) { var files = event.target.files; //FileList object var output = document.getElementById("result"); for (var i = 0; i < files.length; i++) { var file = files[i]; //Only pics 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.innerHTML = ""; output.insertBefore(div, null); }); //Read the image picReader.readAsDataURL(file); } } else { console.log("Your browser does not support File API"); } } document.getElementById('files').addEventListener('change', handleFileSelect, false);
jQuery解决方案
jQuery文件输入图像预览在上传之前
jQuery的:
function readURL(input) { if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function (e) { $('#image_upload_preview').attr('src', e.target.result); } reader.readAsDataURL(input.files[0]); } } $("#inputFile").change(function () { readURL(this); });
工作小提琴
使用Javascript
function handleFileSelect(evt) { var files = evt.target.files; // FileList object // Loop through the FileList and render image files as thumbnails. for (var i = 0, f; f = files[i]; i++) { // Only process image files. if (!f.type.match('image.*')) { continue; } var reader = new FileReader(); // Closure to capture the file information. reader.onload = (function (theFile) { return function (e) { // Render thumbnail. var span = document.createElement('span'); span.innerHTML = [''].join(''); document.getElementById('previewImg').insertBefore(span, null); }; })(f); // Read in the image file as a data URL. reader.readAsDataURL(f); } } document.getElementById('files').addEventListener('change', handleFileSelect, false);
有关此答案的文件API和参考帮助的更多详细信息……
使用您的代码 工作小提琴
HTML
使用Javascript
window.preview = function (input) { if (input.files && input.files[0]) { $(input.files).each(function () { var reader = new FileReader(); reader.readAsDataURL(this); reader.onload = function (e) { $("#previewImg").append(""); } }); } }
使用Jquery和DataURL进行Muliple文件预览