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 对象。