FileReader - 用于异步读取存用户的文件(或原始数据缓冲区)内容
FileReader 对象允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)内容。可以使用 File 或 Blob 对象,来指定要读取的文件或数据。
文件对象可以是来自用户通过 <input> 元素选择文件后返回的 FileList 对象,或者是来自拖放操作产生的 <datatransfer> 对象,或者是来自 HTMLCanvasElement 的 mozGetAsFile() API。
构造函数
 FileReader()
返回一个新构造的 FileReader 。
有关详细信息和示例,请参阅使用 Web 应用程序中的文件。
属性
 FileReader.error 只读 
一个 DOMException 表示读取文件时发生的错误。
 FileReader.readyState 只读 
一个数字,表示 FileReader 的状态。它是以下的一个值:
EMPTY | 
0 | 
尚未加载任何数据。 | 
|---|---|---|
LOADING | 
1 | 
目前正在加载数据。 | 
DONE | 
2 | 
整个读取请求已完成。 | 
 FileReader.result 只读 
文件的内容。该属性仅在读取操作完成后有效,并且数据的格式取决于用于启动读取操作的方法。
事件处理程序
 FileReader.onabort
abort 事件的处理程序。每次读取操作中止时都会触发该事件。
 FileReader.onerror
error 事件的处理程序。每次读取操作遇到错误时都会触发该事件。
 FileReader.onload
load 事件的处理程序。每次成功完成读取操作时都会触发该事件。
 FileReader.onloadstart
loadstart 事件的处理程序。每次读数开始时都会触发该事件。
 FileReader.onloadend
loadend 事件的处理程序。每次读取操作完成(成功或失败)时都会触发该事件。
 FileReader.onprogress
progress事件的处理程序。读取 Blob 内容时会触发该事件。
当
FileReader继承自EventTarget时,也可以使用addEventListener方法监听所有这些事件。
方法
 FileReader.abort()
中止读取操作。返回时,readyState 将为 DONE。
 FileReader.readAsArrayBuffer()
开始读取指定的 Blob 的内容,一旦完成,result 属性包含表示文件数据的 ArrayBuffer。
 FileReader.readAsBinaryString()
开始读取指定的 Blob 的内容,一旦完成,result 属性将包含文件中的原始二进制数据作为字符串。
 FileReader.readAsDataURL()
开始读取指定的 Blob 的内容,一旦完成,result 属性包含一个表示文件数据的 data: URL。
 FileReader.readAsText()
开始读取指定的 Blob 的内容,一旦完成,result 属性将文件的内容包含为文本字符串。
规范
| 规范 | 状态 | 备注 | 
|---|---|---|
| File API FileReader 的定义  | 
工作草案 | 初始定义 | 
桌面浏览器兼容性
| 特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | 
|---|---|---|---|---|---|---|
| 基础支持 | 7 | 支持 | 3.61 | 10 | 11 | 6 | 
| Available in workers | 支持 | 支持 | 46 | 不支持 | 11 | 不支持 | 
abort | 
7 | 支持 | 3.6 | 10 | 11 | 6 | 
error | 
7 | 支持 | 3.6234 | 106 | 11 | 66 | 
onabort | 
7 | 支持 | 3.6 | 10 | 11 | 6 | 
onerror | 
7 | 支持 | 3.6 | 10 | 11 | 6 | 
onload | 
7 | 支持 | 3.6 | 10 | 11 | 6 | 
onloadend | 
7 | 支持 | 3.6 | 10 | 11 | 6 | 
onprogress | 
7 | 支持 | 3.6 | 10 | 11 | 6 | 
readyState | 
7 | 支持 | 3.6 | 10 | 11 | 6 | 
readAsArrayBuffer | 
7 | 支持 | 3.6 | 10 | 12 | 6 | 
readAsBinaryString | 
7 | 支持 | 3.6 | 10 | 11 | 6 | 
readAsDataURL | 
7 | 支持 | 3.6 | 10 | 11 | 6 | 
readAsText | 
7 | 支持 | 3.6 | 10 | 11 | 6 | 
result | 
7 | 支持 | 3.6 | 10 | 11 | 6 | 
移动浏览器兼容性
| 特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari | 
|---|---|---|---|---|---|---|---|
| 基础支持 | 未知 | 支持 | 支持 | 32 | 未知 | 11 | 6.1 | 
| Available in workers | 支持 | 支持 | 支持 | 46 | 未知 | 11 | 不支持 | 
abort | 
未知 | 支持 | 支持 | 32 | 未知 | 11 | 6.1 | 
error | 
未知 | 支持 | 支持 | 3245 | 未知 | 11 | 6.16 | 
onabort | 
未知 | 支持 | 支持 | 32 | 未知 | 11 | 6.1 | 
onerror | 
未知 | 支持 | 支持 | 32 | 未知 | 11 | 6.1 | 
onload | 
未知 | 支持 | 支持 | 32 | 未知 | 11 | 6.1 | 
onloadend | 
未知 | 支持 | 支持 | 32 | 未知 | 11 | 6.1 | 
onprogress | 
未知 | 支持 | 支持 | 32 | 未知 | 11 | 6.1 | 
readyState | 
未知 | 支持 | 支持 | 32 | 未知 | 11 | 6.1 | 
readAsArrayBuffer | 
未知 | 支持 | 支持 | 32 | 未知 | 12 | 6.1 | 
readAsBinaryString | 
未知 | 支持 | 支持 | 32 | 未知 | 11 | 6.1 | 
readAsDataURL | 
未知 | 支持 | 支持 | 32 | 未知 | 11 | 6.1 | 
readAsText | 
未知 | 支持 | 支持 | 32 | 未知 | 11 | 6.1 | 
result | 
未知 | 支持 | 支持 | 32 | 未知 | 11 | 6.1 | 
1. 在 Firefox 4 之前,Blob 的参数原来是 File 对象。
2. 在 Firefox 13 之前,error 属性是一个 FileError 对象。
3. 从 Firefox 13 到 Firefox 58,error 属性返回了 DOMError 对象。
4. 从 Firefox 58 开始,error 属性时一个 DOMException 对象。
5. 从 Firefox 32 到 Firefox 58,error 属性是一个 DOMError 对象。
6. error 属性是一个 error 对象。