html5读取本地文件,图片预览
这里只是写了方法的原型,可以根据需求设置上传的类型,大小。可能有不足的地方,希望大神指正!
案例1,实现本地图片预览(单张),URL.createObjectURL(file)
URL.createObjectURL()创建一个新的对象URL,该对象URL可以代表某一个指定的File
对象或Blob
对象.
html代码
<input type="file" id="changeMore"> <div id="ImgCon"></div>
js代码
1 function changeM(){ 2 var inputJ = $("#changeMore"), 3 input = inputJ[0], 4 Con = $("#ImgCon"); 5 6 inputJ.change(function(e){ 7 var file = e.target.files[0],//拿到原始对象 8 thisType = file.type,//获取到表面的名称,可判断文件类型 9 thisSize = file.size,//文件的大小 10 thisSrc = URL.createObjectURL(file),//当前对象的地址 11 img = $('<img>').attr('src',thisSrc);//创建img对象 12 13 //文件加载成功以后,渲染到页面 14 img.load(function(){ 15 Con.append(img); 16 URL.revokeObjectURL(thisSrc);//释放内存 17 }); 18 }); 19 }// 20 changeM();
案例2,实现本地图片预览(单张),FileReader()
关于fileReader()的方法介绍
<input type="file" id="changeMore"> <div id="ImgCon"></div>
js 代码
1 function changeM(){ 2 var inputJ = $("#changeMore"), 3 input = inputJ[0], 4 Con = $("#ImgCon"); 5 6 inputJ.change(function(e){ 7 var file = e.target.files[0],//拿到原始对象 8 thisType = file.type,//获取到表面的名称,可判断文件类型 9 thisSize = file.size,//文件的大小 10 reader = new FileReader(); 11 12 //readAsDataURL(file),读取文件,将文件以数据URL的形式保存在result的属性中 13 reader.readAsDataURL(file); 14 15 //文件加载成功以后,渲染到页面 16 reader.onload = function(e) { 17 var $img = $('<img>').attr("src", e.target.result); 18 Con.append($img) 19 } 20 }); 21 22 }//changeM end! 23 changeM();
案例3,实现本地图片预览(多张)
方法和前两种一样,拿到的只不过是一个数组,原理都是一样的。
<input type="file" id="changeMore" multiple="multiple"> <div id="ImgCon"></div>
js代码
1 function changeM(){ 2 var inputJ = $("#changeMore"), 3 input = inputJ[0], 4 Con = $("#ImgCon"); 5 6 inputJ.change(function(e){ 7 var files = e.target.files,//拿到file数组 8 thisSrc = '';//当前的地址 9 10 for(var i = 0; i < files.length; i++ ){ 11 thisSrc = URL.createObjectURL(files[i]); 12 13 //文件加载成功后渲染 14 $('<img>').attr('src',thisSrc).load(function(){ 15 Con.append( this ); 16 URL.revokeObjectURL(thisSrc);//释放内存 17 }); 18 19 } 20 }); 21 }// 22 changeM();