Wie unterscheidet man eine Datei von einem Ordner beim Hochladen per Drag & Drop in jquery?

8

Wenn ein Benutzer versucht, einen Ordner per Drag & Drop in mein Datei-Uploader-Steuerelement zu ziehen, muss ich dem Benutzer eine Fehlermeldung anzeigen, dass nur Dateien hochgeladen werden können. Das Problem ist, dass ich eine Datei nicht von einem Ordner unterscheiden konnte.

Eine Möglichkeit war, nach der Dateitypeigenschaft von jQuery zu suchen. Wenn der Name der Datei "test.txt" lautet, gibt der Dateityp "text / plain" zurück. Bei einem normalen Ordnernamen wie "TestFolder" wäre der Dateityp leer und die Dateigröße würde 0 ergeben. Wenn der Ordnername jedoch eine Erweiterung wie "TestFolder.txt" enthält, gibt der Dateityp "text / plain" zurück.

Ich hätte also nach dem Dateityp und der Dateigröße suchen können, aber es würde nicht korrekt für einen Ordnernamen wie "TestFolder.txt" funktionieren. Könnte mir jemand eine gute Lösung vorschlagen, um dies mit jQuery oder anderen Methoden zu beheben?

    
Rajiv 21.02.2012, 14:54
quelle

3 Antworten

3

Die Fähigkeit, festzustellen, ob ein Ordner gelöscht wurde, hängt davon ab, ob der Benutzeragent die Dateisystem-API . Wenn der Benutzeragent die Dateisystem-API unterstützt (derzeit nur Chrome 21+), können Sie die Schnittstelle Entry verwenden, die über zwei untergeordnete Schnittstellen verfügt: DirectoryEntry und FileEntry . Die Schnittstelle selbst hat isDirectory und isFile Funktionen. Ohne Unterstützung für diese Schnittstelle gibt es keine Möglichkeit festzustellen, ob bei der Untersuchung des Objekts DataTransfer Objekte gelöscht wurden.

    
Ray Nicholus 27.03.2013 16:22
quelle
0

Da Sie nicht zulassen, dass der Ordner per Drag & Drop verschoben wird, prüfen Sie zuerst, ob es sich um einen Ordner oder eine Datei handelt. Nur wenn es sich nicht um einen Ordner handelt, suchen Sie nach der Dateierweiterung. Aber IE & lt; 11 unterstützt keine zu handhabende Datei-API. Hoffe es hilft.

    
Gabriel 27.11.2014 04:38
quelle
-1

Soweit mir bekannt ist, hat der Browser (und inhärent JavaScript) keinen Zugriff auf Dateizugriffsmethoden für Sicherheitszwecke, so dass Sie nicht überprüfen können, was die Datei eigentlich ist.

Ich habe mit diesem Problem in der Vergangenheit selbst gearbeitet und die beste Option, die ich gefunden habe, ist die Dateiserverseite zu behandeln und den Fehler nach dem Hochladen auf die Seite zurückzugeben.

Ich würde mich jedoch freuen, bessere Alternativen zu sehen.

    
JakeJ 27.03.2013 14:32
quelle