He configurado un script de carga de archivos de arrastrar y soltar en JS (AJAX POST) y tengo dificultades para filtrar carpetas en Safari - Versión 5.0.3 (6533.19.4).HTML5 Arrastrar y soltar: detectar carpetas en Safari (FileList, Archivo)
Cada vez que elimino varios archivos/carpetas en el navegador, Chrome filtrará las carpetas y Firefox devolverá 0 para .size
, por lo que es trivial proteger contra esos casos. Safari, sin embargo, devolverá un archivo de 68 bytes (el tamaño de la carpeta).
¿Hay alguna forma de comprobar si este File
(artículo en FileList
) es una carpeta? Parece que no puede encontrar nada en el File/Blob API que pone a prueba para esta condición (no tiene sentido tratar .type
, ya que no devuelve nada para los archivos desconocidos, así como las carpetas ...)
Un poco más de información:
Básicamente lo que sucede es que la solicitud AJAX tiene un cuerpo vacío. Estoy subiendo con FormData
:
var file = ...; // the dropped file
var formData = new FormData();
formData.append("file", file);
var xhr = new XMLHttpRequest();
...
xhr.send(formData);
he publicado un informe de error para esto: https://bugs.webkit.org/show_bug.cgi?id= 63898 – meleyal
Las últimas versiones de Chrome parecen presentar el mismo problema que Safari. ¿Tuviste algo de suerte rastreando un método estándar para filtrarlos? –
Parece que hay una propiedad 'isDirectory' basada en esta documentación https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry/isDirectory pero que podría no ser compatible con Safari. –