转自:http://blog.csdn.net/zk437092645/article/details/8745647

用来把文件读入内存,并且读取文件中的数据。FileReader接口提供了一个异步API,使用该API可以在浏览器主线程中异步访问文件系统,读取文件中的数据。到目前文职,只有FF3.6+和Chrome6.0+实现了FileReader接口。

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接口的使用

    1. <script type="text/javascript">
    2. var result=document.getElementById("result");
    3. var file=document.getElementById("file");
    4. //判断浏览器是否支持FileReader接口
    5. if(typeof FileReader == 'undefined'){
    6. result.InnerHTML="<p>你的浏览器不支持FileReader接口!</p>";
    7. //使选择控件不可操作
    8. file.setAttribute("disabled","disabled");
    9. }
    10. function readAsDataURL(){
    11. //检验是否为图像文件
    12. var file = document.getElementById("file").files[0];
    13. if(!/image\/\w+/.test(file.type)){
    14. alert("看清楚,这个需要图片!");
    15. return false;
    16. }
    17. var reader = new FileReader();
    18. //将文件以Data URL形式读入页面
    19. reader.readAsDataURL(file);
    20. reader.onload=function(e){
    21. var result=document.getElementById("result");
    22. //显示文件
    23. result.innerHTML='<img src="' + this.result +'" alt="" />';
    24. }
    25. }
    26. function readAsBinaryString(){
    27. var file = document.getElementById("file").files[0];
    28. var reader = new FileReader();
    29. //将文件以二进制形式读入页面
    30. reader.readAsBinaryString(file);
    31. reader.onload=function(f){
    32. var result=document.getElementById("result");
    33. //显示文件
    34. result.innerHTML=this.result;
    35. }
    36. }
    37. function readAsText(){
    38. var file = document.getElementById("file").files[0];
    39. var reader = new FileReader();
    40. //将文件以文本形式读入页面
    41. reader.readAsText(file);
    42. reader.onload=function(f){
    43. var result=document.getElementById("result");
    44. //显示文件
    45. result.innerHTML=this.result;
    46. }
    47. }
    48. </script>
    49. <p>
    50. <label>请选择一个文件:</label>
    51. <input type="file" id="file" />
    52. <input type="button" value="读取图像" onclick="readAsDataURL()" />
    53. <input type="button" value="读取二进制数据" onclick="readAsBinaryString()" />
    54. <input type="button" value="读取文本文件" onclick="readAsText()" />
    55. </p>
    56. <div id="result" name="result"></div>

FileReader 基本介绍的更多相关文章

  1. 字符输入流_Reader类&FileReader类介绍和字符输入读取字符数据

    java.io.Reader:字符输入流的最顶层父类,其中定义了一些共性的成员方法,是一个抽象类共性的成员方法 int read() 读取单个字符并返回 int read(char[] cbuf) 将 ...

  2. [HTML5] FileReader对象

    写在前面 前一篇文章介绍了HTML5中的Blob对象(详情戳这里),从中了解到Blob对象只是二进制数据的容器,本身并不能操作二进制,故本篇将对其操作对象FileReader进行介绍. FileRea ...

  3. Java笔记--File,FileInputStream,FileReader,InputStreamReader,BufferedReader 的使用和区别

    转自:http://hi.baidu.com/danghj/item/0ef2e2c4ab95af7489ad9e39 参考资料:  < core java > 12 章 使用 Java ...

  4. FileInputStream(字节流)与fileReader(字符流) 的区别

    FileInputStream 类 1 ) FileInputStream 类介绍: 以字节为单位的流处理.字节序列:二进制数据.与编码无关,不存在乱码问题. FileInputStream 类的主要 ...

  5. File,FileInputStream,FileReader,InputStreamReader,BufferedReader 的使用和区别

    1 ) File 类介绍 File 类封装了对用户机器的文件系统进行操作的功能.例如,可以用 File 类获得文件上次修改的时间移动, 或者对文件进行删除.重命名.换句话说,流类关注的是文件内容,而 ...

  6. (转)Java 之 FileReader FileInputStream InputStreamReader BufferedReader 作用与区别

    Java 之 FileReader FileInputStream InputStreamReader BufferedReader 作用与区别 ava.io下面有两个抽象类:InputStream和 ...

  7. Java 之 FileReader FileInputStream InputStreamReader BufferedReader 作用与区别

    ava.io下面有两个抽象类:InputStream和ReaderInputStream是表示字节输入流的所有类的超类Reader是用于读取字符流的抽象类InputStream提供的是字节流的读取,而 ...

  8. 前端H5中JS用FileReader对象读取blob对象二进制数据,文件传输

    HTML5中的Blob对象只是二进制数据的容器,本身并不能操作二进制,故本篇将对其操作对象FileReader进行介绍. FileReader FileReader主要用于将文件内容读入内存,通过一系 ...

  9. java----FileInputStream类与FileReader类的区别(转)

    FileInputStream类与FileReader类的区别:两个类的构造函数的形式和参数都是相同的,参数为File对象或者表示路径的String,它们到底有何区别呢? Readers and W ...

随机推荐

  1. 关于IE6浮动问题!

    以下内容均为个人笔记:望批评指教! IE6下应尽量少使用float 而是  换用display:inline  父层使用text-align:text:效果会好些: 如果一组浮动元素 产生了浮动 最好 ...

  2. postgresql 分区表创建及测试

    1      建立分区 1.1.  创建主表 CREATE TABLE measurement ( city_id         int not null, logdate        date ...

  3. java 读取XML文件作为配置文件

    首先,贴上自己的实例: XML文件:NewFile.xml(该文件与src目录同级) <?xml version="1.0" encoding="UTF-8&quo ...

  4. JSP显示-下拉框

    <TABLE class="table-frame" id=p1 cellSpacing=0 cellPadding=0 width="99%" alig ...

  5. c 深度剖析 5

    1,指针没有指向一块合法的区域 1指针没有初始化 1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h> #include <string. ...

  6. scala言语基础学习十一

    隐式转换 使用隐式转换加强现有的类型的功能-类似于设计模式的装饰模式

  7. URAL 1004 Sightseeing Trip(最小环)

    Sightseeing Trip Time limit: 0.5 secondMemory limit: 64 MB There is a travel agency in Adelton town ...

  8. URAL-1989 Subpalindromes(单点更新+hash)

    题目大意:给一行字符串,两种操作:change(pos,char),将pos处字符改为char:isPalindrome(i,j),询问[i,j]之间是否为回文字符串. 题目分析:做正反两次字符串哈希 ...

  9. how to change the AlexNet into FCNs ?

    How to change the AlexNet into FCNs ? FCNs is a network that only contain convolution layers and no ...

  10. T4 Templates

    T4 Templates and the Entity Framework https://msdn.microsoft.com/en-us/data/gg558520.aspx EF Designe ...