HTML5 Drag and Drop - erkennt Ordner in Safari (FileList, File)

8

Ich habe ein Drag-and-Drop-Skript zum Hochladen von Dateien in JS (AJAX POST) eingerichtet und ich habe Schwierigkeiten, Ordner in Safari - Version 5.0.3 (6533.19.4) zu filtern.

Wenn ich mehrere Dateien / Ordner in den Browser verschiebe, filtert Chrome die Ordner heraus, und Firefox gibt 0 für .size zurück, so dass es einfach ist, sich vor diesen Fällen zu schützen. Safari wird jedoch eine 68-Byte-Datei (die Größe des Ordners) zurückgeben.

Gibt es eine Möglichkeit zu testen, ob diese File (Element in FileList ) ein Ordner ist? Es scheint nichts in der API für Datei / Blob zu finden, die auf diese Bedingung testet (es ist kein Problem, probiert .type , da es nichts für unbekannte Dateien sowie Ordner zurückgibt ...)

Ein bisschen mehr Info:

Grundsätzlich passiert, dass die AJAX-Anfrage einen leeren Körper hat. Ich lade mit FormData :

hoch %Vor%     
biasedbit 01.02.2011, 00:57
quelle

3 Antworten

-2

Warum nicht einfach nach Oldschool-Datei-Suffix suchen? Sollte in den meisten Fällen funktionieren, in denen "file.suf" eine Datei und "Datei" ein Ordner ist ...

    
zoku 15.02.2011, 14:00
quelle
0

Sie konnten mit rohen Postdaten feststellen, ob es sich um eine Datei oder einen Ordner auf dem Server handelte: Erhalten Sie Rohpostdaten

Ich habe bemerkt, dass Ordner nur am Anfang eine Formgrenze und am Ende keine haben. Im Grunde sieht es so aus, als ob der Browser den Post startet und dann einfach stoppt, bevor er die Anfrage erledigt. (Ich habe das nur mit Safari getestet, aber ich denke, es ist das gleiche mit anderen Browsern.)

Sie können den fehlgeschlagenen Upload in der Sitzung speichern und dann mithilfe von AJAX testen, ob der fehlgeschlagene Upload eine solche Anforderung generiert hat. Sie haben eine zusätzliche AJAX-Anfrage, aber Sie können sie zumindest erkennen. Es ist die beste Option, die ich bisher gefunden habe.

    
B. Martin 23.01.2014 09:29
quelle
0

Wir können eine Datei mit FileReader lesen. Code kann wie folgt aussehen:

%Vor%

Bei Ordnern wird ein Fehler ausgegeben:

%Vor%     
Pavel Evstigneev 15.07.2017 05:53
quelle