Ho impostato uno script di trascinamento del caricamento file in JS (AJAX POST) e ho difficoltà a filtrare le cartelle in Safari - Versione 5.0.3 (6533.19.4).HTML5 Drag and Drop - rileva le cartelle in Safari (FileList, File)
Ogni volta che mi calo più file/cartelle nel browser, Chrome filtrare le cartelle, e Firefox restituirà 0 per .size
quindi è banale per la protezione contro questi casi. Safari, tuttavia, restituirà un file di 68 byte (la dimensione della cartella).
C'è un modo per verificare se questo File
(articolo in FileList
) è una cartella? non riesco a trovare nulla nel File/Blob API che i test per questa condizione (nessun punto nel tentativo .type
, dal momento che non restituisce nulla per i file sconosciuti così come le cartelle ...)
Un po 'più di informazioni:
Fondamentalmente ciò che accade è che la richiesta AJAX ha un corpo vuoto. Sto caricando con FormData
:
var file = ...; // the dropped file
var formData = new FormData();
formData.append("file", file);
var xhr = new XMLHttpRequest();
...
xhr.send(formData);
ho postato un bug report per questo: https://bugs.webkit.org/show_bug.cgi?id= 63898 – meleyal
Le ultime versioni di Chrome sembrano presentare lo stesso problema di Safari. Hai avuto fortuna nel rintracciare un metodo standard per filtrarli? –
Sembra che esista una proprietà 'isDirectory' basata su questa documentazione https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry/isDirectory ma che potrebbe non essere supportata in Safari. –