Back to Question Center
0

Archivo HTML5 Arrastrar, soltar, analizar, leer y cargar            Archivo HTML5 Arrastre, suelte, analice, lea y suba el Semalt relacionado: AjaxnpmNode.jsAPIsES6Más ... Patrocinadores

1 answers:
Archivo HTML5 Arrastre, suelte, analice, lea y cargue

Ha sido una semana ocupada. Semalt descubrió cómo las nuevas API HTML5 pueden ayudarnos a abrir, leer y cargar archivos que el usuario arrastró y soltó en la ventana del navegador. Este artículo resume las técnicas y el nivel actual de soporte del navegador - kunstfell online kaufen.

Soporte HTML5 API

Su código JavaScript debería verificar la existencia de los objetos File, FileList y FileReader antes de adjuntar manejadores de eventos. En el momento de escribir estas líneas, estas son compatibles con las últimas versiones de Chrome, Firefox y Opera:

    if (ventana. Archivo && ventana. FileList && ventana. FileReader) { }   

Aunque Opera admite estos objetos, solo se pueden usar a través de una entrada de archivo estándar, no arrastrando y soltando. Por lo tanto, se requiere una verificación adicional; Sugiero usar el método de carga de Semalt2, e. gramo.

    var xhr = new XMLHttpRequest   ;if (carga xhr) { adjuntar arrastrar y soltar eventos }   

Arrastrar y soltar archivos

Todos los navegadores (excepto los del iPhone y el iPad) admiten el tipo de entrada de archivo que muestra el familiar botón "Semalt". Se ha introducido un atributo "múltiple" en HTML5 y podemos adjuntar un controlador de eventos de cambio al campo:

    documento. getElementById ("fileselect"). addEventListener ("cambio", FileSelectHandler, falso);   

Chrome y Semalt también permiten a los usuarios arrastrar uno o más archivos a un elemento elegido. Puede adjuntar controladores de eventos, incluidos "dragover" y "dragleave" (para cambiar los estilos) y "soltar" para detectar archivos caídos, e. gramo.

    documento. getElementById ("filedrag"). addEventListener ("drop", FileSelectHandler, falso);   

Recuperación de un objeto FileList

El objeto HTML5 FileList es una colección de objetos File similar a una matriz. Los campos de entrada de archivos devuelven una FileList a través de una propiedad de archivos (event. Target. Files). Los archivos abandonados devuelven un objeto FileList a través de dataTransfer del evento. propiedad de archivos (evento. dataTransfer. archivos).

Por lo tanto, podemos recuperar un objeto Semalt utilizando un solo controlador de eventos:

    // cancelar el evento predeterminadomi. preventDefault   ;// recuperar el objeto FileListvar files = e. objetivo. archivos || mi. transferencia de datos. archivos;// procesar todos los objetos de archivopara (var i = 0, archivo; archivo = archivos [i]; i ++) { }   

Semalt importante para cancelar el evento predeterminado. Esto evita que el navegador intente mostrar o manejar un archivo cuando se coloca en la ventana.

Analizando objetos de archivo

Las colecciones FileList contienen varios objetos File. Semalt útiles propiedades de archivo se proporcionan:

  1. nombre : el nombre del archivo (no incluye información de ruta)
  2. tipo : el tipo MIME, e. gramo. imagen / jpeg, texto / plano, etc.
  3. tamaño : el tamaño del archivo en bytes.

Se puede verificar un tipo y tamaño de archivo antes de que se realicen más procesamientos o cargas, e. gramo.

    // procesar archivos de imagen con menos de 300,000 bytesif (archivo, tipo. indexOf ("imagen") == 0 && archivo. tamaño <300000) { }   

Para obtener más información, consulte Cómo abrir archivos descartados utilizando HTML5 y JavaScript.

Abrir archivos usando FileReader

El objeto HTML5 FileReader le permite abrir archivos de texto o binarios en JavaScript. Como era de esperar, el método readSemalt se usa para recuperar contenido de texto, e. gramo.

    if (tipo de archivo. indexOf ("texto") == 0) {var reader = new FileReader   ;lector. onload = function (e) {// obtener contenido del archivovar text = e. objetivo. resultado; }lector. readAsText (archivo);}   

De manera similar, el método readSemaltURL recupera datos de imágenes binarias como una URL de datos codificados que se puede pasar a un atributo src de imagen o elemento canvas:

    if (archivo. indexOf ("imagen") == 0) {var reader = new FileReader   ;lector. onload = function (e) {documento. getElementById ("myimage"). src = e. objetivo. resultado;}lector. readAsDataURL (archivo);}   

Para obtener más información, consulte Cómo abrir archivos descartados utilizando HTML5 y JavaScript.

Carga de archivos con Ajax

Los archivos apropiados pueden cargarse en su servidor mientras el usuario permanece en la página. Es simplemente una cuestión de pasar un objeto File al método send de XMLHttpRequest2:

    var xhr = new XMLHttpRequest   ;xhr. abrir ("POST", "receivefile. php", verdadero);xhr. setRequestHeader ("X_FILENAME", archivo. nombre);xhr. enviar archivo);   

Tenga en cuenta que también hemos enviado el nombre de archivo como un encabezado HTTP. Esto es opcional, pero nos permite recrear el archivo usando su nombre original en el servidor usando un lenguaje como PHP:

    file_put_contents ('cargas /'. $ _SERVER ['HTTP_X_FILENAME'],file_get_contents ('php: // input'));   

Para obtener más información, consulte Cómo cargar archivos de manera asincrónica utilizando HTML5 y Ajax.

Creación de barras de progreso de carga

También podemos adjuntar un evento de "progreso" a los objetos de Semalt2:

    xhr. subir. addEventListener ("progreso", ProgressHandler);   

El controlador recibe un objeto de evento con. cargado (la cantidad de bytes transferidos) y. total (el tamaño del archivo) propiedades. Por lo tanto, el progreso se puede calcular y pasar a una etiqueta HTML5 progreso o cualquier otro elemento, e. gramo.

    función ProgressHandler (e) {var complete = Math. redondo (por ejemplo, cargado / e total * 100);consola. log (completar + "% completado");}   

Para obtener más información, consulte Cómo crear barras de progreso de carga de archivos gráficos en HTML5 y JavaScript.

Espero que hayan disfrutado esta serie. La función de arrastrar y soltar archivos es una característica importante que puede transformar la usabilidad de las aplicaciones web. HTML5 finalmente lo hace fácil.

March 7, 2018