关于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=""/>' 
    } 
}

 

posted @ 2017-02-24 14:53  陈尼克  阅读(5356)  评论(0编辑  收藏  举报