una subir soltar manejo listar leer ejemplo drop contenido carpeta arrastrar archivos archivo and javascript jquery file-upload drag-and-drop

subir - manejo de archivos en javascript



¿Cómo distinguir un archivo de una carpeta durante la carga usando arrastrar y soltar en jquery? (3)

Por lo que sé, el navegador (y javascript inherentemente) no tiene acceso a ninguna metodología de acceso a archivos por razones de seguridad, por lo que no puede verificar qué es realmente el archivo.

He trabajado con este problema yo mismo en el pasado y la mejor opción que he encontrado que funciona es manejar el archivo del lado del servidor y devolver el error a la página una vez que se ha completado la carga.

Sin embargo, me gustaría ver mejores alternativas.

Si un usuario intenta arrastrar y soltar una carpeta en mi control de carga de archivos para cargarla, entonces necesito mostrar un mensaje de error al usuario diciendo que solo se pueden subir archivos. El problema es que no pude distinguir un archivo de una carpeta.

Una forma en que pensé era verificar la propiedad del tipo de archivo de jQuery. Suponiendo que el nombre del archivo es "test.txt", el tipo de archivo devolverá "text / plain". Para un nombre de carpeta normal como "TestFolder", el tipo de archivo estaría en blanco y su tamaño de archivo sería 0. Sin embargo, si el nombre de la carpeta incluyera una extensión como "TestFolder.txt", el tipo de archivo devolvería "text / plain".

Así que podría haber verificado el tipo de archivo y el tamaño del archivo, pero no funcionaría correctamente para el nombre de la carpeta, como "TestFolder.txt". ¿Podría alguien sugerirme una buena solución para arreglar esto usando jQuery u otros métodos?


La capacidad de determinar si una carpeta se ha eliminado depende de la compatibilidad del agente de usuario con la API del sistema de archivos . Si el agente de usuario SOPORTA la API del sistema de archivos (actualmente solo Chrome 21+), puede hacer uso de la interfaz de Entry , que tiene dos interfaces secundarias: DirectoryEntry y FileEntry . La interfaz en sí tiene las funciones isDirectory y isFile . Sin soporte para esta interfaz, no hay manera de determinar si los elementos descartados son carpetas al examinar el objeto DataTransfer .


Como no va a permitir que la carpeta arrastre y suelte, compruebe primero si se trata de una carpeta o un archivo, solo en segundo lugar si no es una carpeta, luego verifique la extensión del archivo. Pero IE <11 no es compatible con la API de archivos. Espero eso ayude.