HTML5之FileReader的使用

HTML5定义了FileReader作为文件API的重要成员用于读取文件,FileReader接口提供了读取文件的方法和包含读取结果的事件模型。 

1.检测浏览器对FileReader的支持 

if(!window.FileReader){  
    span.innerHTML = "你的浏览器不支持图片上传预览功能";  
    return;  
}  

2.调用FileReader对象的方法

       FileReader 的实例拥有 4 个方法,其中 3 个用以读取文件,另一个用来中断读取。下面的表格列出了这些方法以及他们的参数和功能,需要注意的是 ,无论读取成功或失败,方法并不会返回读取结果,这一结果存储在 result属性中。 

方法名参数描述
abortnone中断读取
readAsBinaryStringfile将文件读取为二进制码
readAsDataURLfile将文件读取为 DataURL
readAsTextfile, [encoding]将文件读取为文本

readAsText:该方法有两个参数,其中第二个参数是文本的编码方式,默认值为 UTF-8。这个方法非常容易理解,将文件以文本方式读取,读取的结果即是这个文本文件中的内容。 
readAsBinaryString:该方法将文件读取为二进制字符串,通常我们将它传送到后端,后端可以通过这段字符串存储文件。 
readAsDataURL:这是例子程序中用到的方法,该方法将文件读取为一段以 data: 开头的字符串,这段字符串的实质就是 Data URL,Data URL是一种将小文件直接嵌入文档的方案。这里的小文件通常是指图像与 html 等格式的文件。 

3. 处理事件

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

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

文件一旦开始读取,无论成功或失败,实例的 result 属性都会被填充。如果读取失败,则 result 的值为 null ,否则即是读取的结果,绝大多数的程序都会在成功读取文件的时候,抓取这个值。

<!DOCTYPE html>  
<html>  
<head>  
<meta charset="UTF-8">  
<title>Insert title here</title>  
<script type="text/javascript">  
    function showImage(fileElement){  
        var span = document.getElementById("show");  
        //判断浏览器是否支持文件预览  
        if(!window.FileReader){  
            span.innerHTML = "你的浏览器不支持图片上传预览功能";  
            return;  
        }  
        var file = fileElement.files[0];  
        //用正则表达式判断是否是图片类型  
        if(!/^image\/\w+$/.test(file.type)){  
            alert("请按规矩出牌");  
            return;  
        }  
        var reader = new FileReader();  
        reader.readAsDataURL(file);  
        reader.onload=function(e){  
            span.innerHTML = "<img src="+reader.result+" alt='this is a img'/>";  
        }  
    }  
</script>  
</head>  
<body>  
    <form action="" enctype="">  
        <fieldset>  
            <legend>图片文件上传预览</legend>  
            <input type="file" name="photo" id="photo" onchange="showImage(this)"/>  
            <span id="show"></span>  
        </fieldset>  
    </form>  
</body>  
</html>  

 

转载于:https://my.oschina.net/u/4134962/blog/3069535

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值