Qué es Generador de input de carga de directorio?
El atributo webkitdirectory en un elemento input type=file permite a los usuarios seleccionar una carpeta completa en lugar de archivos individuales. Cuando se selecciona una carpeta, el navegador popula el FileList del input con todos los archivos del directorio seleccionado y sus subdirectorios. Cada archivo tiene una propiedad webkitRelativePath que proporciona la ruta relativa al directorio seleccionado (por ejemplo, images/logo.png). El atributo estandarizado directory proporciona la misma funcionalidad en navegadores modernos.
Respuesta rápida
Use input type=file con el atributo webkitdirectory para permitir a los usuarios seleccionar carpetas enteras para subir. Cada archivo en el directorio seleccionado expone una propiedad webkitRelativePath que muestra su ruta relativa a la carpeta elegida. Compatible con Chrome 30+, Edge 12+, Safari 11.1+ y Firefox 50+. El HTML generado incluye una zona de arrastrar y soltar, visualización de lista de archivos con vista de árbol de directorios y soporte para modos de archivo único, múltiples archivos y directorio.
Last updated: 2026-06-01
Limitaciones
- webkitRelativePath solo está disponible para archivos seleccionados mediante un selector de directorio: los archivos añadidos mediante arrastrar y soltar desde el sistema operativo no tienen información de ruta en Firefox y Safari, aunque Chrome y Edge soportan arrastrar y soltar directorios.
- El soporte del navegador para input de directorio es sólido en navegadores basados en Chromium y Firefox, pero la implementación de Safari ha ido históricamente por detrás. El atributo estándar directory es compatible con Safari 17+ pero las versiones antiguas de Safari requieren el prefijo webkitdirectory.
- Las selecciones de directorio grandes (miles de archivos) pueden congelar la pestaña del navegador mientras se popula y muestra la lista de archivos. Use renderizado diferido o un Web Worker para implementaciones de producción que manejen directorios grandes.
Sources:MDN Web Docs · W3C Specifications · jquery.app on GitHub
Cómo usar esta herramienta
- Elija el modo de subida: archivo único (un archivo a la vez), múltiples archivos (seleccionar varios archivos) o directorio (seleccionar una carpeta completa).
- Configure la zona de arrastrar y soltar: active o desactive el soporte de arrastrar y soltar, personalice el texto de la zona y el estilo de estado activo (color de borde, fondo o superposición).
- Personalice la visualización de la lista de archivos: muestre nombres de archivo, tamaños, tipos y webkitRelativePath para subidas de directorio. Alterne entre una lista plana y una vista de árbol que preserve la estructura de directorios.
- Copie el HTML generado con CSS y JavaScript integrados. La salida incluye una interfaz de subida de archivos completa e independiente con manejo de eventos para el evento change y eventos de arrastrar y soltar.
Para qué puedes usarla
- Construir una interfaz de subida para un sitio de documentación que acepte carpetas enteras de imágenes o archivos markdown preservando la estructura de directorios.
- Crear una herramienta de subida masiva de archivos para un CMS donde los editores arrastran y sueltan una carpeta de activos y las rutas relativas se usan para el mapeo de URLs.
- Diseñar una herramienta de migración que acepte una carpeta de contenido exportado y use webkitRelativePath para reconstruir la jerarquía de directorios original en el servidor.