关于H5里的API,上传图片预览功能
FileReader:读取本地图片文件并显示
写在开头
之前公司要求做一个H5页面,功能是照相和选择相册相片,并且能在屏幕上预览。然后我就傻里吧唧的各种找插件,因为有些插件不适配手机的型号,安卓机基本死掉,苹果有时候也会出点小bug(会闪退)。那是最后的解决方案是不显示图片了,把选择的链接上传就好了。知道今天我才发现Html5里面有个能上传图片的API,怎么不上天!?
接下来就讲讲这个怎么实现
也不多说废话,先放代码再讲解
HTML:
<p> <label>请选择一个图像文件:</label> <input type="file" id="file_input" /> 选择图片的input按钮 </p> <div id="rrr"></div>//拿来放图片用的
js:
var aaa = document.getElementById("rrr"); //获取显示图片的div元素 var input = document.getElementById("file_input"); //获取选择图片的input元素 //这边是判断本浏览器是否支持这个API。 if(typeof FileReader==='undefined'){ aaa.innerHTML = "抱歉,你的浏览器不支持 FileReader"; input.setAttribute('disabled','disabled'); }else{ input.addEventListener('change',readFile,false); //如果支持就监听改变事件,一旦改变了就运行readFile函数。 } function readFile(){ var file = this.files[0]; //获取file对象 //判断file的类型是不是图片类型。 if(!/image\/\w+/.test(file.type)){ alert("文件必须为图片!"); return false; } var reader = new FileReader(); //声明一个FileReader实例 reader.readAsDataURL(file); //调用readAsDataURL方法来读取选中的图像文件 //最后在onload事件中,获取到成功读取的文件内容,并以插入一个img节点的方式显示选中的图片 reader.onload = function(e){ aaa.innerHTML = '<img src="'+this.result+'" alt=""/>' } }