FileReader作为文件API的重要成员用于读取文件,FileReader接口提供了读取文件的方法和包含读取结果的事件模型。
1、创建FileReader
对象
var reader=new FileReader();
2、调用FileReader
对象的方法:
- abort
该方法没有参数, 中断读取。 - readAsBinaryString
参数file
,该方法将文件读取为二进制字符串,通常我们将它传送到后端,后端可以通过这段字符串存储文件。 - readAsDataURL
参数file
,该方法将文件读取为一段以data:
开头的字符串,这段字符串的实质就是 Data URL,Data URL是一种将小文件直接嵌入文档的方案。这里的小文件通常是指图像与 html 等格式的文件。 - readAsText
该方法有两个参数file
和encoding
,encoding
是编码方式,默认是UTF-8
,该方法将文件以文本方式读取,读取的结果即是这个文本文件中的内容
3、处理事件
FileReader
包含了一套完整的事件模型,用于捕获读取文件时的状态:
- onabort
中断时触发 - onerror
发生错误是触发 - onload
文件读取成功完成时触发 - onloadend
读取完成触发,无论成功或失败 - onloadstart
读取开始时触发 - onprogress
读取中
文件一旦开始读取,无论成功或失败,实例的 result 属性都会被填充。如果读取失败,则 result 的值为 null ,否则即是读取的结果,绝大多数的程序都会在成功读取文件的时候,抓取这个值
4、 下面是利用FileReader
实现图片的上传
js 代码
<script type="text/javascript">
var fileInput=document.getElementById("fileName"),
preview=document.getElementById("preview"),
info=document.getElementById("info");
fileInput.addEventListener('change',function(){
preview.style.backgroundImage='';
if(!fileInput.value){
info.innerHTML="没有选择图片";
return;
}
//获取file 引用
var file=fileInput.files[0]; //file object
info.innerHTML="文件:"+file.name+"<br>"+"大小:"+file.size+"<br>"+"修改:"+file.lastModifiedDate;
//判断文件类型
if(file.type!="image/jpeg" && file.type!="image/png"&& file.type!="image/gif" && file.type!="image/jpg"){
alert("请选择图片");
return;
}
//读取文件
var reader=new FileReader();
//文件读取成功完成时触发
reader.onload = function(e) {
var data=e.target.result;
alert(data)
preview.style.backgroundImage="url("+data+")";
}
// 以DataURL的形式读取文件:
reader.readAsDataURL(file);
})
</script>
HTML 代码
<div class="body">
<div id="preview"></div> <!--显示图片-->
<input type="file" name="file" id="fileName">
<div id="info"></div>
</div>
效果图

网友评论