<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> 选择图片文件 <!-- input[file]标签的accept属性可用于指定上传文件的 MIME类型 Chrome和Safari等Webkit浏览器下却出现了响应滞慢的问题 是accept=”image/*” 属性的问题 将 * 通配符修改为指定的MIME类型,就可以解决Webkit浏览器下的对话框显示滞慢的问题 --> <input type="file" id="imgFile" accept="image/jpeg,image/png,image/gif"/> <br /> 选择文本文件 <input type="file" id="textFile" accept="text/*"/> <br /> <img src="" alt="图片" id="image"/> <br /> <div id="txt"></div> <script> //获得dom对象 var imgFile = document.getElementById('imgFile'); var textFile = document.getElementById('textFile'); var image = document.getElementById('image'); var txt = document.getElementById('txt'); /* * 读取二进制图片数据 */ imgFile.onchange = function() { //获得文件读取对象 异步读取文件的接口 - FileReader var fr = new FileReader(); //读取文件内容 //readAsDataURL方法用于读取指定Blob或File的内容。 //当读操作完成,readyState变为DONE, loadend被触发,此时result属性包含数据:URL以base64编码的字符串表示文件的数据。 fr.readAsDataURL( this.files[0] ); //异步读取文件内容,读取完毕会触发fr的onload事件 fr.onload = function() { //fr对象的result属性代表文件的内容(base64数据) console.log(this.result); //显示图片 image.src = this.result; } } /* * 读取纯文本数据 */ textFile.onchange = function() { //获得文件读取对象 var fr = new FileReader(); //读取文件内容 fr.readAsText( this.files[0] ); fr.onload = function() { console.log(this.result); txt.innerText = this.result; } } </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> 选择文件:<input type="file" accept="image/gif,image/png,image/jpeg" onchange="filecheck(this)"/> <script> function filecheck(obj){ var fr=new FileReader(); fr.readAsDataURL(obj.files[0]); fr.onload=function(){ console.log(this.result);//此处的this指代fr这个对象 } } </script> </body> </html>