FileReader
==========

**Note:** This feature is available in Web Workers

The **`FileReader`** object lets web applications asynchronously read the contents of files (or raw data buffers) stored on the user's computer, using `File` or `Blob` objects to specify the file or data to read.

File objects may be obtained from a `FileList` object returned as a result of a user selecting files using the `<input>` element, or from a drag and drop operation's `DataTransfer` object.

`FileReader` can only access the contents of files that the user has explicitly selected, either using an HTML `<input type="file">` element or by drag and drop. It cannot be used to read a file by pathname from the user's file system. To read files on the client's file system by pathname, use the File System Access API. To read server-side files, use `fetch()`, with CORS permission if reading cross-domain.

EventTarget

FileReaderConstructor
-----------

`FileReader()`

Returns a new `FileReader` object.

See Using files from web applications for details and examples.

Instance properties
-------------------

`FileReader.error` Read only 

A `DOMException` representing the error that occurred while reading the file.

`FileReader.readyState` Read only 

A number indicating the state of the `FileReader`. This is one of the following:

| Name | Value | Description |
| --- | --- | --- |
| `EMPTY` | `0` | No data has been loaded yet. |
| `LOADING` | `1` | Data is currently being loaded. |
| `DONE` | `2` | The entire read request has been completed. |

`FileReader.result` Read only 

The file's contents. This property is only valid after the read operation is complete, and the format of the data depends on which of the methods was used to initiate the read operation.

Instance methods
----------------

`FileReader.abort()`

Aborts the read operation. Upon return, the `readyState` will be `DONE`.

`FileReader.readAsArrayBuffer()`

Starts reading the contents of the specified `Blob`, once finished, the `result` attribute contains an `ArrayBuffer` representing the file's data.

`FileReader.readAsBinaryString()` 
Deprecated

Starts reading the contents of the specified `Blob`, once finished, the `result` attribute contains the raw binary data from the file as a string.

`FileReader.readAsDataURL()`

Starts reading the contents of the specified `Blob`, once finished, the `result` attribute contains a `data:` URL representing the file's data.

`FileReader.readAsText()`

Starts reading the contents of the specified `Blob`, once finished, the `result` attribute contains the contents of the file as a text string. An optional encoding name can be specified.

Events
------

Listen to these events using `addEventListener()` or by assigning an event listener to the `oneventname` property of this interface. Remove the event listeners with `removeEventListener()`, once `FileReader` is no longer used, to avoid memory leaks.

`abort`

Fired when a read has been aborted, for example because the program called `FileReader.abort()`.

`error`

Fired when the read failed due to an error.

`load`

Fired when a read has completed successfully.

`loadend`

Fired when a read has completed, successfully or not.

`loadstart`

Fired when a read has started.

`progress`

Fired periodically as data is read.

Specifications
--------------

| Specification |
| --- |
| File API # APIASynch |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* Using files from web applications
* `File`
* `Blob`
* `FileReaderSync`