2020-09-18

Js中FileReader()用法

开发工具与关键技术: MVC
作者: 罗培发
撰写时间:2020.9.16
HTML5定义了FileReader作为文件API的重要成员用于读取文件,根据W3C的定义,FileReader接口提供了读取文件的方法和包含读取结果的事件模型。
1、检测浏览器对FileReader的支持
1  if(window.FileReader) {     var 
2  fr = new FileReader();
3  // add your code here
4  } else 
5  {
6  alert("Not supported by your browser!");
7	if(window.FileReader) {     var fr = new FileReader();
    // add your code here
} else {
    alert("Not supported by your browser!");
}
2、调用FileReader对象的方法
FileReader 的实例拥有 4 个方法,其中 3 个用以读取文件,另一个用来中断读取。下面的表格列出了这些方法以及他们的参数和功能,需要注意的是 ,无论读取成功或失败,方法并不会返回读取结果,这一结果存储在 result属性中。
方法名	参数	描述
abort	none	中断读取
readAsBinaryString	file	将文件读取为二进制码
readAsDataURL	file	将文件读取为 DataURL
readAsText	file, [encoding]	将文件读取为文本
readAsText:该方法有两个参数,其中第二个参数是文本的编码方式,默认值为 UTF­8。这个方法非常容易理解,将文件以文本方式读取,读取的结果即是这个文本文件中的内容。
readAsBinaryString:该方法将文件读取为二进制字符串,通常我们将它传送到后端,后端可以通过这段字符串存储文件。 readAsDataURL:这是例子程序中用到的方法,该方法将文件读取为一段以 data: 开头的字符串,这段字符串的实质就是 Data URL,
Data URL是一种将小文件直接嵌入文档的方案。这里的小文件

3、处理事件
FileReader 包含了一套完整的事件模型,用于捕获读取文件时的状态,下面这个表格归纳了这些事件。

事件		描述
onabort	中断时触发	
onerror	出错时触发	
onload	文件读取成功完成时触发	
onloadend	读取完成触发,无论成功或失败	
onloadstart	读取开始时触发	
onprogress	读取中	

1
2
3	fr.onload = function() {
    this.result;
}





文件一旦开始读取,无论成功或失败,实例的 result 属性都会被填充。如果读取失败,则 result 的值为 null ,否则即是读取的结果,绝大多数的程序都会在成功读取文件的时候,抓取这个值。
下面通过一个上传图片预览和带进度条上传来展示FileReader的使用。 
1
2  <script type="text/javascript">
3   function showPreview(source) { 
4    var file = source.files[0]; 	
5         if(window.FileReader) {
6                 var fr = new FileReader();
7            fr.onloadend = function(e) {	
8         document.getElementById("portrait").src
9 = e.target.result;                 };
10     fr.readAsDataURL(file);
11
12
13
14
15	<script type="text/javascript">
        function showPreview(source) {
            var file = source.files[0];
            if(window.FileReader) {
                var fr = new FileReader();
                fr.onloadend = function(e) {
                    document.getElementById("portrait").src = e.target.result;                 };
                fr.readAsDataURL(file);
            }         }
    </script>
 
<input type="file" name="file" onchange="showPreview(this)" />
<img id="portrait" src="" width="70" height="75">

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值