File

La interfaz File provee información acerca de los archivos y permite que el código JavaScript en una página web tenga acceso a su contenido.

Los objetos File son generalmente recuperados a través de un objeto FileList retornado como resultado de un usuario seleccionado archivos por medio de un elemento <input> , desde las operaciones drag y drop de un objeto  DataTransfer , o desde la API mozGetAsFile() en un HTMLCanvasElement. En Gecko, desde código con privilegios es posible crear objetos File representando cualquier archivo local sin esperar la interacción del usuario (ver Implementation notes para más información.)

Un objeto File es una especie específica de Blob, y puede ser utilizada en cualquier contexto que un Blob puede ser usado. En particular, FileReader, URL.createObjectURL(), createImageBitmap(), y XMLHttpRequest.send() aceptan tanto Blobs y Files.

Ver Utilizando archivos desde aplicaciones web (Using files from web applications) para más información y ejemplos.

Constructor

File()
Retorna un nuevo objeto de tipo File.

Propiedades

File.lastModifiedRead only
Retorna el último tiempo que el archivo se modifico, en milisegundos desde la época de UNIX (1 de enero de 1970 a medianoche).
File.lastModifiedDate Read only
Retorna la última fecha (en un objeto DateDate) de modificación del archivo referenciada por el objeto File.
File.nameRead only
Retorna el nombre del archivo referenciada por el objeto File.
File.webkitRelativePath Read only
Retorna la ruta relativa de la URL del File.

File implementa Blob, así que también cuenta con las siguientes propiedades:

File.sizeRead only
Retorna el tamaño del archivo en bytes.
File.typeRead only
Retorna el tipo MIME del archivo.

Métodos

La interfaz File no define algún método, pero los hereda de la interfaz Blob:

Blob.slice([start[, end[, contentType]]])
Retorna un nuevo objeto Blob conteniendo la información en el rango especificado de bytes de la fuente Blob.
Blob.stream()
Transforma el archivo File en un ReadableStream que puede ser usado para leer el contenido de File.
Blob.text()
Transforma el archivo File en una corriente (stream) para leerse hasta completarse. Retorna una promesa que se resuelve con un USVString (texto).
Blob.arrayBuffer()
Transforma el archivo File en una corriente y leerlo hasta completarse. Devuelve una promesa que resuelve con un ArrayBuffer.

Especificaciones

Especificación Estado Comentario
File API Working Draft Definición inicial.

Compatibilidad en Navegadores

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome para AndroidFirefox para AndroidOpera para AndroidSafari en iOSSamsung Internet
FileChrome Soporte completo 13Edge Soporte completo 12Firefox Soporte completo 7
Soporte completo 7
Sin soporte 3 — 7
Notas
Notas Non-standard implementation.
IE Soporte completo 10Opera Soporte completo 11.5Safari Soporte completo 6WebView Android Soporte completo ≤37Chrome Android Soporte completo 18Firefox Android Soporte completo 7
Soporte completo 7
Sin soporte 4 — 7
Notas
Notas Non-standard implementation.
Opera Android Soporte completo 11.5Safari iOS Soporte completo 6Samsung Internet Android Soporte completo 1.0
File() constructorChrome Soporte completo 38Edge Soporte completo 79Firefox Soporte completo 28IE Sin soporte NoOpera Soporte completo 25Safari Soporte completo 10WebView Android Soporte completo 38Chrome Android Soporte completo 38Firefox Android Soporte completo 28Opera Android Soporte completo 25Safari iOS Soporte completo 10Samsung Internet Android Soporte completo 3.0
lastModifiedChrome Soporte completo 13Edge Soporte completo 18Firefox Soporte completo 15IE Sin soporte NoOpera Soporte completo 16Safari Soporte completo 10WebView Android Soporte completo SiChrome Android Soporte completo SiFirefox Android Sin soporte NoOpera Android Sin soporte NoSafari iOS Soporte completo 10Samsung Internet Android Soporte completo Si
lastModifiedDate
DeprecadoNo estándar
Chrome Soporte completo 13Edge Soporte completo 12Firefox Sin soporte 15 — 61IE Soporte completo 10Opera Soporte completo 16Safari Sin soporte NoWebView Android Soporte completo SiChrome Android Soporte completo SiFirefox Android Sin soporte NoOpera Android Sin soporte NoSafari iOS Sin soporte NoSamsung Internet Android Soporte completo Si
nameChrome Soporte completo 13Edge Soporte completo 12Firefox Soporte completo 3.6IE Soporte completo 10Opera Soporte completo 16Safari Soporte completo SiWebView Android Soporte completo SiChrome Android Soporte completo SiFirefox Android Soporte completo 4Opera Android Sin soporte NoSafari iOS Soporte completo 8Samsung Internet Android Soporte completo Si
typeChrome Soporte completo 13Edge Soporte completo 12Firefox Soporte completo 3.6IE Soporte completo 10Opera Soporte completo 16Safari Soporte completo SiWebView Android Soporte completo SiChrome Android Soporte completo SiFirefox Android Sin soporte NoOpera Android Sin soporte NoSafari iOS Soporte completo SiSamsung Internet Android Soporte completo Si
webkitRelativePathChrome Soporte completo 13
Prefijado
Soporte completo 13
Prefijado
Prefijado Requiere de un prefijo de vendedor : webkit
Edge Soporte completo 13Firefox Soporte completo 49IE Sin soporte NoOpera Sin soporte NoSafari Soporte completo 11.1WebView Android Soporte completo SiChrome Android Soporte completo 18
Prefijado
Soporte completo 18
Prefijado
Prefijado Requiere de un prefijo de vendedor : webkit
Firefox Android Soporte completo 49Opera Android Sin soporte NoSafari iOS Soporte completo 11.3Samsung Internet Android Soporte completo 1.0
Prefijado
Soporte completo 1.0
Prefijado
Prefijado Requiere de un prefijo de vendedor : webkit

Leyenda

Soporte completo  
Soporte completo
Sin soporte  
Sin soporte
No estandar . Esperar poco soporte entre navegadores.
No estandar . Esperar poco soporte entre navegadores.
Deprecado. No debe ser usado en nuevos sitios web.
Deprecado. No debe ser usado en nuevos sitios web.
Ver notas de implementación.
Ver notas de implementación.
Requiere de un prefijo de proveedor o un de nombre diferente para su uso.
Requiere de un prefijo de proveedor o un de nombre diferente para su uso.

Notas de Implementación

  • En Gecko, puedes hacer uso de esta API desde código chrome. Vea Utilizando la API DOM File en código chrome (Using the DOM File API in chrome code) para más detalles.
  • Empezando desde Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3), código privilegiado (como las extensiones por ejemplo) puede pasar un objeto nsIFile al constructor  DOM File para especificar el archivo a referenciar.
  • Empezando desde Gecko 8.0 (Firefox 8.0 / Thunderbird 8.0 / SeaMonkey 2.5), usted puede usar new File para la creación de objetos File a partir de código de componentes XPCOM en lugar de tener que instanciar el objeto nsIDOMFile directamente. El constructor toma, en contraste a Blob, un segundo argumento como nombre de archivo. El nombre de archivo puede ser cualquier String. 
    File File(
      Array parts,
      String filename, 
      BlobPropertyBag properties
    );
  •  Las siguientes propiedades y métodos no estándar fueron removidos en Gecko 7 (Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4): File.fileName, File.fileSize, File.getAsBinary(), File.getAsDataURL(), File.getAsText(string encoding) (error 661876). Propiedades estándar File.name, Blob.size, y métodos en FileReader deberían ser usados en su lugar.

Ver también