The File
interface provides information about files and allows JavaScript in a web page to access their content.
File
objects are generally retrieved from a FileList
object returned as a result of a user selecting files using the <input>
element, from a drag and drop operation's DataTransfer
object, or from the mozGetAsFile()
API on an HTMLCanvasElement
.
A File
object is a specific kind of a Blob
, and can be used in any context that a Blob can. In particular, FileReader
, URL.createObjectURL()
, createImageBitmap()
, and XMLHttpRequest.send()
accept both Blob
s and File
s.
See Using files from web applications for more information and examples.
<div id="interfaceDiagram" style="display: inline-block; position: relative; width: 100%; padding-bottom: 11.666666666666666%; vertical-align: middle; overflow: hidden;"><svg style="display: inline-block; position: absolute; top: 0; left: 0;" viewbox="-50 0 600 70" preserveAspectRatio="xMinYMin meet"><a xlink:href="/docs/Web/API/Blob" target="_top"><rect x="1" y="1" width="75" height="50" fill="#fff" stroke="#D4DDE4" stroke-width="2px" /><text x="38.5" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">Blob</text></a><polyline points="76,25 86,20 86,30 76,25" stroke="#D4DDE4" fill="none"/><line x1="86" y1="25" x2="116" y2="25" stroke="#D4DDE4"/><a xlink:href="/docs/Web/API/File" target="_top"><rect x="116" y="1" width="75" height="50" fill="#F4F7F8" stroke="#D4DDE4" stroke-width="2px" /><text x="153.5" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">File</text></a></svg></div>
a:hover text { fill: #0095DD; pointer-events: all;}
Constructor
File()
- Returns a newly constructed
File
.
Instance properties
File.prototype.lastModified
Read only- Returns the last modified time of the file, in millisecond since the UNIX epoch (January 1st, 1970 at Midnight).
File.prototype.lastModifiedDate
Read only- Returns the last modified
Date
of the file referenced by theFile
object. File.prototype.name
Read only- Returns the name of the file referenced by the
File
object. File.prototype.webkitRelativePath
Read only- Returns the path the URL of the
File
is relative to.
File
implements Blob
, so it also has the following properties available to it:
File.prototype.size
Read only- Returns the size of the file in bytes.
File.prototype.type
Read only- Returns the MIME type of the file.
Instance methods
The File
interface doesn't define any methods, but inherits methods from the Blob
interface:
Blob.prototype.slice([start[, end[, contentType]]])
- Returns a new
Blob
object containing the data in the specified range of bytes of the sourceBlob
. Blob.prototype.stream()
- Transforms the
File
into aReadableStream
that can be used to read theFile
contents. Blob.prototype.text()
- Transforms the
File
into a stream and reads it to completion. It returns a promise that resolves with aUSVString
(text). Blob.prototype.arrayBuffer()
- Transforms the
File
into a stream and reads it to completion. It returns a promise that resolves with anArrayBuffer
.
Specifications
Specification | Status | Comment |
---|---|---|
File API The definition of 'The File interface' in that specification. |
Working Draft | Initial definition. |
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
File | Chrome Full support 13 | Edge Full support 12 | Firefox
Full support
7
| IE Full support 10 | Opera Full support 11.5 | Safari Full support 6 | WebView Android Full support ≤37 | Chrome Android Full support 18 | Firefox Android
Full support
7
| Opera Android Full support 11.5 | Safari iOS Full support 6 | Samsung Internet Android Full support 1.0 |
File() constructor | Chrome Full support 13 | Edge Full support 79 | Firefox Full support 7 | IE No support No | Opera Full support 11.5 | Safari Full support 10.1 | WebView Android Full support ≤37 | Chrome Android Full support 18 | Firefox Android Full support 7 | Opera Android Full support 11.5 | Safari iOS Full support 6 | Samsung Internet Android Full support 1.0 |
lastModified | Chrome Full support 13 | Edge Full support 18 | Firefox Full support 15 | IE No support No | Opera Full support 16 | Safari Full support 10 | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android No support No | Opera Android No support No | Safari iOS Full support 10 | Samsung Internet Android Full support Yes |
lastModifiedDate | Chrome Full support 13 | Edge Full support 12 | Firefox No support 15 — 61 | IE Full support 10 | Opera Full support 16 | Safari No support No | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android No support No | Opera Android No support No | Safari iOS No support No | Samsung Internet Android Full support Yes |
name | Chrome Full support 13 | Edge Full support 12 | Firefox Full support 3.6 | IE Full support 10 | Opera Full support 16 | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android No support No | Opera Android No support No | Safari iOS No support No | Samsung Internet Android Full support Yes |
type | Chrome Full support 13 | Edge Full support 12 | Firefox Full support 3.6 | IE Full support 10 | Opera Full support 16 | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android No support No | Opera Android No support No | Safari iOS Full support Yes | Samsung Internet Android Full support Yes |
webkitRelativePath | Chrome
Full support
13
| Edge Full support 13 | Firefox Full support 49 | IE No support No | Opera No support No | Safari Full support 11.1 | WebView Android Full support Yes | Chrome Android
Full support
18
| Firefox Android Full support 49 | Opera Android No support No | Safari iOS Full support 11.3 | Samsung Internet Android
Full support
1.0
|
Legend
- Full support
- Full support
- No support
- No support
- Non-standard. Expect poor cross-browser support.
- Non-standard. Expect poor cross-browser support.
- Deprecated. Not for use in new websites.
- Deprecated. Not for use in new websites.
- See implementation notes.
- See implementation notes.
- Requires a vendor prefix or different name for use.
- Requires a vendor prefix or different name for use.
See also
- Using files from web applications
FileReader
- Using the DOM File API in chrome code (for privileged code running in Gecko, such as Firefox add-ons)