File HTML5
File HTML5
CAPÍTULO 15 FILE
HTML5 ofrece una forma estándar de interactuar con archivos locales a través de la
especificación del API de archivos. El API de archivos se puede utilizar, por ejemplo, para crear
una vista previa en miniatura de imágenes mientras se envían al servidor o para permitir que
una aplicación guarde una referencia de un archivo mientras el usuario se encuentra sin
conexión. También se podría utilizar para verificar si el tipo MIME de un archivo seleccionado
por el usuario coincide con los formatos de archivo permitidos o para restringir el tamaño de
un fichero, antes de enviarlo al servidor.
A continuación se indican las interfaces que ofrece la especificación para acceder a archivos
desde un sistema de archivos local:
Cuando se utiliza junto con las estructuras de datos anteriores, el API de FileReader se
puede utilizar para leer un archivo de forma asíncrona mediante el control de eventos de
JavaScript. Por lo tanto, se puede controlar el progreso de una lectura, detectar si se han
producido errores y determinar si ha finalizado una carga de un fichero. El modelo de evento
de FileReader guarda muchas semejanzas con el API de XMLHttpRequest .
function handleFileSelect(e) {
var files = e.target.files; // FileList object
A continuación se indican las cuatro opciones de lectura asíncrona de archivo que incluye
FileReader :
Una vez que se ha activado uno de estos métodos de lectura en el objeto FileReader , se
pueden escuchar los eventos onloadstart , onprogress , onload , onabort , onerror y
onloadend para realizar un seguimiento de su progreso de lectura. En el ejemplo que se
muestra a continuación, obtenemos las imágenes de los elementos seleccionados por el
usuario, leemos su contenido con reader.readAsDataURL() mostramos una miniatura de la
imagen:
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
reader.onloadend = function(e) {
if (e.target.readyState == FileReader.DONE) { // DONE == 2
document.getElementById('byte_content').textContent = e.target.resul
t;
document.getElementById('byte_range').textContent =
['Read bytes: ', start + 1, ' - ', stop + 1,
' of ', file.size, ' byte file'].join('');
}
};
if (file.webkitSlice) {
var blob = file.webkitSlice(start, stop + 1);
} else if (file.mozSlice) {
var blob = file.mozSlice(start, stop + 1);
}
reader.readAsBinaryString(blob);
ÍNDICE DE CONTENIDOS
File