美文网首页
FileReader:读取本地图片文件并显示(转)

FileReader:读取本地图片文件并显示(转)

作者: ideadsnow_ | 来源:发表于2014-10-15 21:16 被阅读761次

    要想在页面上显示本地图片,以前我们通常的做法是将选择的图片文件上传至后端服务器,后端对其进行存储,再将图片的URL返回到前端,前端通过这个URL来显示图片。而HTML5的FileReader接口支持本地预览,FileReader接口主要是将文件读入内存,并提供相应的方法,来读取文件中的数据,当然就能显示本地图片不需上传了。目前高级浏览器实现了FileReader接口,所以像IE6这些老东西直接滚粗。

    在此之前,我们有文章:HTML5应用之文件拖拽上传,看完这篇文章后,你可以尝试制作一个拖拽和显示图片、编辑图片、最后上传的功能。


    HTML

    <p> 
       <label>请选择一个图像文件:</label> 
       <input type="file" id="file_input" /> 
    </p>  
    <div id="result"></div> 
    

    Javascript

    通过getElementById获取节点,判断浏览器的兼容性,对于不支持FileReader接口的浏览器将给出一个提示并禁用input,否则监听input的change事件。

    var result = document.getElementById("result"); 
    var input = document.getElementById("file_input"); 
     
    if(typeof FileReader==='undefined'){ 
        result.innerHTML = "抱歉,你的浏览器不支持 FileReader"; 
        input.setAttribute('disabled','disabled'); 
    }else{ 
        input.addEventListener('change',readFile,false); 
    } 
    

    然后,当file_input的change事件触发时,调用函数readFile()。在readFile中,我们首先获取file对象,然后通过file的type属性来检测文件类型,我们当然只允许选择图像类型的文件,然后我们new一个FileReader实例,并调用readAsDataURL方法来读取选中的图像文件,最后在onload事件中,获取到成功读取的文件内容,并以插入一个img节点的方式显示选中的图片。

    function readFile(){ 
        var file = this.files[0]; 
        if(!/image\/\w+/.test(file.type)){ 
            alert("文件必须为图片!"); 
            return false; 
        } 
        var reader = new FileReader(); 
        reader.readAsDataURL(file); 
        reader.onload = function(e){ 
            result.innerHTML = '<img src="'+this.result+'" alt=""/>' 
        } 
    } 
    

    完整页面代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <p>
            <label>请选择一个图像文件:</label>
            <input type="file" id="file_input" />
        </p>
        <div id="result"></div>
    
        <script type="text/javascript">
            var result = document.getElementById("result"); 
            var input = document.getElementById("file_input"); 
     
            if(typeof FileReader==='undefined'){ 
                result.innerHTML = "抱歉,你的浏览器不支持 FileReader"; 
                input.setAttribute('disabled','disabled'); 
            }else{ 
                input.addEventListener('change',readFile,false); 
            } 
    
    
    
            function readFile(){ 
                var file = this.files[0]; 
                if(!/image\/\w+/.test(file.type)){ 
                    alert("文件必须为图片!"); 
                    return false; 
                } 
                var reader = new FileReader(); 
                reader.readAsDataURL(file); 
                reader.onload = function(e){ 
                    result.innerHTML = '<img src="'+this.result+'" alt=""/>' 
                }
            } 
        </script>
    </body>
    </html>
    

    本文来源: 作者helloweba.com, 链接FileReader:读取本地图片文件并显示

    相关文章

      网友评论

          本文标题:FileReader:读取本地图片文件并显示(转)

          本文链接:https://www.haomeiwen.com/subject/dleptttx.html