zoukankan      html  css  js  c++  java
  • HTML5读取本地文件 FileReader API接口

    1、FileReader接口的方法

    FileReader接口有4个方法,其中3个用来读取文件,另一个用来中断读取。无论读取成功或失败,方法并不会返回读取结果,这一结果存储在result属性中。

    FileReader接口的方法
    方法名参数描述
    readAsBinaryString file 将文件读取为二进制编码
    readAsText file,[encoding] 将文件读取为文本
    readAsDataURL file 将文件读取为DataURL
    abort (none) 终端读取操作

    2、FileReader接口事件

    FileReader接口包含了一套完整的事件模型,用于捕获读取文件时的状态。

    FileReader接口的事件
    事件 描述
    onabort 中断
    onerror 出错
    onloadstart 开始
    onprogress 正在读取
    onload 成功读取
    onloadend 读取完成,无论成功失败

    3、FileReader接口的使用

    //判断浏览器是否支持FileReader接口  
    if(typeof FileReader == 'undefined'){  
        result.InnerHTML="<p>你的浏览器不支持FileReader接口!</p>";  
        //使选择控件不可操作  
        file.setAttribute("disabled","disabled");  
    }  
    
    function readAsDataURL(){  
        //检验是否为图像文件  
        var file = document.getElementById("file").files[0];  
        if(!/image/w+/.test(file.type)){  
            alert("看清楚,这个需要图片!");  
            return false;  
        }  
        var reader = new FileReader();  
        //将文件以Data URL形式读入页面  
        reader.readAsDataURL(file);  
        reader.onload=function(e){  
            var result=document.getElementById("result");  
            //显示文件  
            result.innerHTML='<img src="' + this.result +'" alt="" />';  
        }  
    }  
    

      

    function readAsBinaryString(){  
        var file = document.getElementById("file").files[0];  
        var reader = new FileReader();  
        //将文件以二进制形式读入页面  
        reader.readAsBinaryString(file);  
        reader.onload=function(f){  
            var result=document.getElementById("result");  
            //显示文件  
            result.innerHTML=this.result;  
        }  
    }
    

      

    function readAsText(){  
        var file = document.getElementById("file").files[0];  
        var reader = new FileReader();  
        //将文件以文本形式读入页面  
        reader.readAsText(file);  
        reader.onload=function(f){  
            var result=document.getElementById("result");  
            //显示文件  
            result.innerHTML=this.result;  
        }  
    } 
    

      

    实例--demo

    <!doctype html>
    <html>
    <head>
      <title>文件上传</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1.0,minimum-scale=1.0, maximum-scale=1.0,user-scalable=no">
    </head>
    <body>
    
     <script>
       function readLocalFile () {
    		//alert("start...");
    		var localFile = document.getElementById("uploadFile").files[0];
    		//alert(uploadFile);
    		//alert(localFile.name);
    		//alert(localFile.type);
    		//alert(localFile.size);
    		var reader = new FileReader();
    		//Uncaught SyntaxError:Unexpected identifier
    		var content;
    		reader.onload = function(event) {
    			content = event.target.result;
    			//alert(content);
    			
    			document.getElementById("img").src = content;
    			document.getElementById("fileContent").value = content;
    		}
    		reader.onerror = function(event) {
    		 alert('error')
    			//alert("File could not be read! Code " + event.target.error.code);
    		}
    		//reader.readAsText(localFile,"UTF-8");
    		
    		content = reader.readAsDataURL(localFile,"UTF-8");
    		//
    	}
     </script>
     
        <section>
    		<input type="file" id="uploadFile" onchange="readLocalFile()";/>
    		<div><img src="" id="img"/></div>
    		
    		<div><textarea id="fileContent" rows="30" cols="60"></textarea></div>
    	</section>
    	
    </body>
    </html>
    

      

      

  • 相关阅读:
    利用VS的预生成事件获取SVN版本作为项目内部版本号
    静态构造函数到底执行了多少次?
    C#之自定义的implicit和explicit转换
    FineUI之使用SQL脚本从数据库表中生成相应的输入控件
    文件操作
    PHP中文件类型 文件属性 路径以及 文件相关的函数
    MySqli 中预处理类 stmt
    MySql 事务处理
    MySqli 执行多条SQL语句
    PHP与MySqli
  • 原文地址:https://www.cnblogs.com/MrZouJian/p/5909263.html
Copyright © 2011-2022 走看看