FileReader

FileReader 用来把文件读入内存,并且读取文件中的数据。FileReader对象 提供了一个异步API,使用该 API 可以在浏览器主线程中异步访问文件系统,读取文件中的数据

其中 File对象 可以是来自用户在一个<input>元素上选择文件后返回的 FileList对象,也可以来自拖放操作生成的 DataTransfer对象,还可以是来自在一个 HTMLCanvasElement 上执行 mozGetAsFile() 方法后返回结果。

构造函数

声明并返回一个新构造的 FileReader对象

let reader = new FileReader()

属性

属性名类型描述
errorDOMError在读取文件时发生的错误. 只读.
readyStateunsigned short表明FileReader对象的当前状态. 值为State constants中的一个. 只读
resultjsval读取到的文件内容.这个属性只在读取操作完成之后才有效,并且数据的格式取决于读取操作是由哪个方法发起的. 只读.

方法

FileReader接口的方法

方法名参数描述
abort(none)终止读取操作
readAsBinaryStringfile将文件读取为二进制编码
readAsTextfile,[encoding]将文件读取为文本
readAsDataURLfile将文件读取为DataURL

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

事件

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

事件描述
onabort当读取操作被中止时调用
onerror当读取操作发生错误时调用
onloadstart当读取操作将要开始之前调用
onprogress在读取数据过程中周期性调用
onload当读取操作成功完成时调用
onloadend当读取操作完成时调用,不管是成功还是失败.该处理程序在onload或者onerror之后调用

使用

一般通过 DOM节点 拿到文件读取的结果

// 一个文件上传的回调 <input type="file" onchange="onChange(event)">
function onChange(event) {
  var file = event.target.files[0];
  var reader = new FileReader();
  reader.onload = function(event) {
    // 文件里的文本会在这里被打印出来
    console.log(event.target.result)
  };

  reader.readAsDataURL(file);
}