Wie kann ich mit HTML einschränken, welche Dateitypen hochgeladen werden können?
Um die Benutzererfahrung zu vereinfachen, möchte ich das Hochladen von Dateien auf nur Bilder (JPEG, GIF, PNG) beschränken.
<form method="post" action="..." enctype="multipart/form-data">
<label for="image">Photo</label>
<input name="image" type="file" />
</form>
html
image
upload
file-upload
JacobT
quelle
quelle
Antworten:
HTML5 sagt
<input type="file" accept="image/*">
. Vertrauen Sie natürlich niemals der clientseitigen Validierung: Überprüfen Sie immer wieder auf der Serverseite ...quelle
Die HTML5-Dateieingabe hat ein Akzeptanzattribut und mehrere Attribute. Durch die Verwendung mehrerer Attribute können Sie mehrere Bilder in eine Instanz hochladen.
Sie können auch mehrere MIME-Typen einschränken.
und eine andere Möglichkeit, den MIME-Typ mithilfe eines Dateiobjekts zu überprüfen.
Dateiobjekt gibt Ihnen Name, Größe und Typ.
Sie können den Benutzer auch für das Hochladen einiger Dateitypen durch den obigen Code einschränken.
quelle
image/*|audio/*|video/*
funktioniert bei mir nicht, es sollte durch Kommas getrennt sein, wie es scheint:image/*,video/mp4,.txt
Bearbeitet
Wenn die Dinge so wären, wie sie sein sollten, können Sie dies über das Attribut "Akzeptieren" tun.
http://www.webmasterworld.com/forum21/6310.htm
Browser ignorieren dies jedoch so gut wie, so dass dies nicht relevant ist. Die kurze Antwort lautet: Ich glaube nicht, dass es eine Möglichkeit gibt, dies in HTML zu tun. Sie müssten es stattdessen serverseitig überprüfen.
Der folgende ältere Beitrag enthält einige Informationen, die Ihnen bei Alternativen helfen können.
Dateieingabe 'accept' Attribut - ist es nützlich?
quelle
Hier ist der HTML-Code zum Hochladen von Bildern. Standardmäßig werden Bilddateien nur im Browserfenster angezeigt, da wir sie eingegeben haben
accept="image/*"
. Wir können es jedoch weiterhin in der Dropdown-Liste ändern und es werden alle Dateien angezeigt. Der Javascript-Teil überprüft also, ob die ausgewählte Datei ein tatsächliches Bild ist oder nicht.Hier beim Änderungsereignis überprüfen wir zuerst die Größe des Bildes. Und in der zweiten
if
Bedingung prüfen wir, ob es sich um eine Bilddatei handelt oder nicht.this.files[0].type.indexOf("image")
wird sein,-1
wenn es keine Bilddatei ist.quelle
Sie können dies nur auf der Serverseite sicher tun. Die Verwendung des Attributs "accept" ist gut, muss jedoch auch auf der Serverseite überprüft werden, damit Benutzer ohne diese Einschränkung auf Ihr Skript zugreifen können.
Ich schlage vor, dass Sie: Nicht-Image-Dateien verwerfen, den Benutzer warnen und das Formular erneut anzeigen.
quelle
Jetzt im HTML-Teil
Dieser Code prüft, ob es sich bei der hochgeladenen Datei um eine JPG-Datei handelt oder nicht, und schränkt das Hochladen anderer Typen ein
quelle
Letztendlich wird der Filter, der im Fenster Durchsuchen angezeigt wird, vom Browser festgelegt. Sie können alle gewünschten Filter im Attribut Akzeptieren angeben, können jedoch nicht garantieren, dass der Browser Ihres Benutzers diese einhält.
Am besten filtern Sie im Backend des Servers.
quelle
Kasse eines Projekts namens Uploadify. http://www.uploadify.com/
Es ist ein Flash + jQuery-basierter Datei-Uploader. Hierbei wird der Dateiauswahldialog von Flash verwendet, mit dem Sie Dateitypen filtern, mehrere Dateien gleichzeitig auswählen usw. können.
quelle