Los componentes de carga son programas diseñados para integrarse en un sitio web y añadirle la funcionalidad de carga de archivos. Estos componentes reemplazan el mecanismo de carga estándar de HTML4 . En comparación con HTML4, los componentes de carga ofrecen una interfaz más intuitiva y admiten una gama más amplia de funciones.
Carga de archivos HTML
El estándar HTML4 permite solicitar datos desde un ordenador cliente y subirlos a un servidor. El mecanismo estándar para este tipo de transmisión de datos son los formularios HTML. [ 1 ] [ 2 ] Con los formularios HTML, los archivos de un usuario se pueden subir utilizando la etiqueta <input/> con diferentes atributos. Este método permite a los desarrolladores web implementar la funcionalidad básica de carga de archivos. Sin embargo, presenta las siguientes desventajas:
- No es posible subir varios archivos a la vez; un usuario solo puede subir un archivo a la vez.
- Tamaño de carga limitado: normalmente es imposible enviar archivos de hasta decenas de megabytes (MB) a través de HTTP.
- No hay optimización disponible antes de subir los archivos.
- Visualización deficiente: el usuario no puede ver ninguna información sobre el progreso de la carga ni el tiempo estimado de carga.
- La vista previa de los archivos seleccionados no es compatible.
- Aspecto y funcionamiento poco prácticos: la forma en que el usuario selecciona los archivos para subirlos resulta incómoda.
Alternativas de carga de HTML
Los componentes de carga permiten sortear las restricciones y desventajas de la carga HTML mencionadas anteriormente. Un componente de carga es un complemento que permite subir archivos desde un cliente a un servidor . Generalmente, los componentes de carga son desarrollados por empresas externas y se pueden integrar en cualquier sitio web y plataforma . El navegador del usuario mostrará el componente de carga integrado como parte de la página web. Los componentes de carga se pueden crear con diversas tecnologías: Flash , Silverlight , Java , ActiveX y HTML5 .
La comunidad W3C está desarrollando un estándar HTML5, cuya especificación completa se espera para 2014. [ 3 ] Se supone que HTML5 admite contenido multimedia sin necesidad de complementos ni componentes. Para la funcionalidad de carga, las nuevas API de HTML5 [ 4 ] ofrecen una amplia variedad de nuevas características, incluido el acceso al sistema de archivos del cliente y la generación y el procesamiento dinámico de solicitudes de imágenes.
Las nuevas características de HTML5 podrían ser una buena base para implementar componentes de carga con una interfaz de usuario sofisticada y la capacidad de cargar cualquier cantidad de datos. Desafortunadamente, en la actualidad los navegadores admiten estas características de forma parcial y desigual, lo que representa un serio obstáculo. La situación se agrava si recordamos que un gran número de usuarios aún utiliza Windows XP (28%) [ 5 ] y versiones obsoletas de Internet Explorer (11%). [ 6 ]
Tecnologías para crear componentes de carga
Los componentes de carga de archivos pueden desarrollarse a partir de diversas tecnologías destinadas a ampliar la funcionalidad del navegador. Dependiendo de la tecnología y sus características, los componentes de carga pueden ofrecer mayor o menor funcionalidad, ser más o menos configurables y más fáciles de usar.
Java
Los applets de Java son componentes que se ejecutan en un navegador web . Se desarrollan en código de bytes de Java y son compatibles con la mayoría de los sistemas operativos y navegadores modernos. Los applets de Java ofrecen un alto rendimiento, similar al del software nativo instalado. Al estar firmados con certificados de seguridad, se convierten en software de confianza, lo que permite su redistribución automática desde un sitio web y su instalación en equipos cliente.
Destello
Los componentes de carga se pueden implementar como controles de Adobe Flash . Flash es un marco para ejecutar aplicaciones multimedia enriquecidas en Internet. El 24 % de todos los sitios web utilizan componentes de Flash, [ 7 ] y el reproductor de Flash está instalado en el 99 % de los PC con acceso a Internet. [ 8 ] Flash es una tecnología multiplataforma y multinavegador que permite que los componentes de carga de Flash funcionen en varios navegadores, con la excepción de las plataformas móviles .
Luz plateada
Otro tipo de componentes de carga es Silverlight , una tecnología de Microsoft que requiere la instalación de un complemento para el navegador. Sus características son muy similares a las de Adobe Flash y es compatible con la mayoría de los navegadores y sistemas operativos modernos. Existen versiones de Silverlight para Windows y Mac OS X , así como una versión para Linux llamada Moonlight . Silverlight es una de las tecnologías básicas utilizadas en el desarrollo de aplicaciones para Windows Phone .
HTML5
HTML5 es un nuevo estándar HTML desarrollado para añadir soporte multimedia. Es compatible con Windows, Mac OS X, Linux, iOS , Android y Windows Phone. Dado que el formato aún está en desarrollo y algunas de las funciones para subir archivos todavía no forman parte del estándar, los componentes de carga de HTML5 no son comunes actualmente. Su compatibilidad se limita a un subconjunto de navegadores.
Compatibilidad con HTML5 en navegadores de escritorio
La compatibilidad con HTML5 ha mejorado constantemente. Las versiones más recientes de Chrome , Firefox , Safari y Opera ofrecen la mejor cobertura de las funciones de HTML5 . Internet Explorer es el que menos compatibilidad ofrece. Internet Explorer 10 tiene menos compatibilidad que las versiones de otros navegadores; sin embargo, su cobertura será el doble de buena que la de Internet Explorer 9 .
Compatibilidad con HTML5 en plataformas móviles
iOS 5 cuenta con un nivel de compatibilidad con HTML5 suficientemente alto; sin embargo, su nivel de compatibilidad sigue siendo inferior al de los navegadores de escritorio.
Windows Phone 7.5 "Mango" ofrece una compatibilidad limitada con HTML5, lo que lo hace comparable a la falta de compatibilidad con este estándar que presenta Internet Explorer 9 para ordenadores de escritorio.
La última versión de Android, la 5.0, es compatible con muchas más funciones HTML5 que Windows Phone, pero menos que iOS.
La compatibilidad de los navegadores móviles con HTML5 sigue en desarrollo. [ 9 ] [ 10 ]
Funcionalidades que no son posibles con la carga estándar de HTML4
Los componentes de carga aportan funciones adicionales y una experiencia de usuario que no puede ofrecer el HTML4 puro.
- barra de progreso
- Las barras de progreso se utilizan para informar a los usuarios sobre el progreso de la carga. Los componentes de carga admiten barras de progreso que muestran parámetros como nombres de archivo, tamaños de archivo, velocidad de carga, etc.
- Carga de varios archivos y carpetas
- Algunos sitios web requieren compatibilidad para subir varios archivos a la vez. Esta función es fundamental para los componentes de carga en redes sociales , galerías de fotos , intercambio de archivos , etc. El enfoque estándar de HTML4 es engorroso. Los componentes de carga admiten la subida de varios archivos de forma más flexible, por ejemplo, permitiendo una selección más sencilla de archivos para subir simultáneamente desde varias carpetas.
- Carga de archivos enormes
- La carga de grandes cantidades de datos siempre supone un problema, ya que el tamaño de la solicitud puede ser demasiado grande para que el proceso de carga se complete correctamente, posiblemente debido a conexiones a Internet lentas o inestables. En el lado del servidor, pueden aplicarse restricciones al tamaño máximo de las solicitudes HTTP. Los componentes de carga deben encontrar un equilibrio entre las necesidades del cliente, por un lado, y los recursos y restricciones del servidor y del canal, por otro. En el caso de la entrega de archivos grandes a los componentes del servidor, la llamada "carga por fragmentos" divide un archivo en varias partes (fragmentos) antes de que comience el proceso de carga. Cada fragmento se envía en respuesta a una única solicitud; una vez que todos los fragmentos llegan al servidor, el archivo original se vuelve a ensamblar.
- Carga a prueba de fallos
- Durante el proceso de carga, pueden surgir problemas o fallos inesperados que provoquen el fallo de la carga y la corrupción de los archivos. Para solucionar estos problemas, los componentes de carga cuentan con mecanismos de seguridad que incluyen funciones como la reanudación automática del proceso, el envío de archivos individualmente en un único paquete y la carga por fragmentos.
- Envío de datos adicionales junto con los archivos
- En ocasiones, resulta útil enviar datos adicionales junto con un archivo, como descripciones informativas, campos Exif / IPTC o sumas hash para identificar si un archivo se corrompió o dañó durante el proceso de carga.
- Carga simultánea
- Los componentes de carga pueden contar con una función de carga simultánea, que permite enviar paquetes de carga en varios hilos . En algunos casos, el proceso de carga se beneficia al aumentar la velocidad general de carga, disminuir el tiempo de carga y utilizar los recursos informáticos de forma más eficaz.
- Carga instantánea
- Este método permite que la carga de archivos comience justo después de que se agreguen a la cola de carga.
- Subir a almacenamiento en la nube
- Los componentes de carga pueden subir archivos al almacenamiento en la nube .
- Arrastrar y soltar
- La función de arrastrar y soltar es una forma de interacción entre el usuario y la interfaz gráfica del programa que consiste en seleccionar un objeto y arrastrarlo sobre otro. Esta función está muy extendida, ya que ayuda a aumentar la usabilidad del programa .
- Apariencia personalizable
- La función de carga de componentes permite personalizar la apariencia de los componentes para que se adapten al diseño de un sitio web mediante configuraciones como estilos de fuente, tamaños, colores o modos de visualización, entre otras.
- Localización
- Una vez que un componente de carga de archivos llega al mercado internacional, necesita soporte para traducir las etiquetas y los mensajes de texto de la interfaz a otros idiomas. Por lo general, los componentes de carga de archivos ofrecen soporte configurable para los idiomas más utilizados . La interfaz de usuario también puede ser multilingüe. Para algunos idiomas, como el hebreo , el proceso de localización incluye no solo la traducción, sino también la adaptación a la escritura de derecha a izquierda.
- Validaciones de archivos del lado del cliente
- Para ahorrar recursos del servidor, los componentes de carga pueden aplicar validación del lado del cliente a los archivos seleccionados para la carga en varios grupos: tipos de archivo (que el desarrollador puede definir o bloquear selectivamente), tamaño del archivo (que se puede establecer en tamaños mínimos/máximos permitidos) y tamaño de la imagen (que puede tener tamaños mínimos/máximos configurados, entre otros parámetros).
Carga de imágenes
Los componentes de carga se utilizan para subir imágenes, por lo que existen componentes que cuentan con funciones adicionales para el procesamiento previo a la carga de imágenes.
- Cambiar tamaño
- Las fotos tomadas con cámaras digitales modernas tienen alta resolución , pero la mayoría de los sitios web necesitan redimensionarlas para ahorrar ancho de banda. Los componentes de carga permiten redimensionar y subir imágenes automáticamente, con o sin el archivo original, o una miniatura para usarla como avatar, etc.
- Girar
- La rotación de imágenes es una función muy importante para los sitios web que ofrecen a los usuarios herramientas básicas de edición de imágenes. Las imágenes se rotan automáticamente (según los datos Exif) o bien el usuario puede rotarlas manualmente.
- Cultivo
- La función Recortar permite a los usuarios seleccionar una parte de la imagen que se guardará o imprimirá. Recortar implica eliminar las partes exteriores de la imagen para resaltar algún objeto o cambiar la relación de aspecto.
- marcas de agua
- Una marca de agua es un mensaje de texto o una imagen superpuesta a la imagen original, y se utiliza para proteger la propiedad intelectual o especificar información importante, como la fecha en que se tomó la imagen, comentarios de texto o derechos de autor. Los componentes de carga pueden incluir una función para agregar marcas de agua a todas las imágenes cargadas.
- metadatos Exif/IPTC
- Las imágenes pueden contener metadatos en varios formatos, por ejemplo, Exif o IPTC.
- Los campos Exif incluyen información del dispositivo que capturó el archivo de imagen: parámetros de la cámara, fecha y lugar donde se tomó la imagen, exposición, parámetros de la lente, datos GPS y otros. [ 11 ]
- Los campos IPTC contienen datos más específicos relacionados con la autoría de una imagen. [ 12 ] Es extremadamente importante que los componentes de carga conserven los metadatos originales de la imagen en el proceso de carga.
- Medidor de calidad
- Quality meter is a visual indicator showing image quality (dpi, width, height) and it helps a user to decide whether an image is good enough to use. An example of quality meter usage can be a photo printing web site with a built-in upload component that notifies users if an image resolution is not right for it to be printed in a selected format.
References
- ↑Nebel, E.; Masinter, L. (1995). "RFC 1867 Form-based File Upload in HTML". doi:10.17487/RFC1867.
{{cite journal}}: Cite journal requires|journal=(help) - ↑"HTML Forms and Input".
- ↑"W3C HTML5 Working Draft".
- ↑"W3C HTML5 API Specifications".
- ↑"W3C OS Statistics".
- ↑"W3C Browser Statistics".
- ↑"W3C Web Technology Surveys. Usage of Flash for websites".
- ↑"Adobe Flash Statistics. PC Penetration".
- ↑"HTML5 Support Statistics".
- ↑"BrowserScope HTML5 support statistics".
- ↑"Exif specification". Archived from the original on 2020-11-27. Retrieved 2012-06-15.
- ↑"IPTC Specification". Archived from the original on 2012-06-16. Retrieved 2012-06-15.
- Distributed data storage
- HTML