Input accept="image/png" funktioniert nicht in Firefox
<input type="file" accept="image/png">
Es wird erwartet, dass der Datei-dialog akzeptiert png-Dateien nur. Aber accept="image/png"
funktioniert nicht auf Firefox. Wie kann ich es machen?
P. S. Es funktioniert in Chrome.
- wir sind fast im Jahr 2015, und manche Browser unterstützen nicht die
accept
richtig. das ist peinlich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anscheinend gibt es eine spezifische Frage zu Firefox mit einigen Erweiterungen. Lesen Sie mehr über diesen Fehler hier.
Den neuesten Stand dieser Fehler ist von ein paar Monaten und es scheint noch nicht gelöst werden. Für jetzt, ich würde vorschlagen, server-side-Datei zu überprüfen oder zumindest können Sie JavaScript verwenden, um zu überprüfen, die Erweiterung der Datei, bevor es wieder hochgeladen.
Andere Antworten beschreiben, Firefox einfach nicht unterstützen
type="image/png"
noch. Stattdessen ignoriert das Attribut und nicht für eine Datei-filter. Mittype="image/*"
funktionieren würde, aber dann wird der filter es ermöglichen würde, alle Bild-Dateien.Vielleicht die beste praktische Lösung ist die Verwendung von JavaScript-code, der überprüft, ob die Dateinamenerweiterung. Es muss nicht wirklich etwas beweisen, aber nahe zu 100% iger Sicherheit, PNG-Dateien haben Namen, die Endung mit .png und andere Dateien nicht. Beispiel-code (ersetzen das unhöflich
alert
durch eine Funktion, die entsprechend Ihrer UI-design):Der Nachteil ist, dass, wenn scripting deaktiviert ist, wird Firefox akzeptiert keine Datei, obwohl
accept="image/*"
würde zumindest die Dateien einschränken, um image-Dateien. Allerdings JavaScript deaktiviert, ist wohl selten genug, im Vergleich mit den Schwierigkeiten der browser-sniffing benötigt, um server verschiedenetype
Attribute zu verschiedenen Browsern.Sollten Sie natürlich überprüfen Sie die Dateitypen auf dem server, bevor Sie etwas mit den Dateien, da jede Filterung von Datei-Typen wird einfach umgangen, durch Zufall oder absichtlich-
Machen Firefox teilweise Respekt das accept-Attribut können Sie diesen code verwenden, kopiert und modifiziert von Jukka K. Korpela Antwort (danke!+1), mit dem zusätzlichen bonus, wobei die ursprüngliche Element accept-Attribut, nicht ragt für PNGs, nicht nur eine Erweiterung.
Können Sie es verwenden, wie diese:
Wird es nicht funktionieren mit den mime-Typen oder Gruppen wie
image/*
(es wird einfach ignorieren), aber könnte geändert werden, um fügen Sie eine Liste der Erweiterungen, die für jeden mime-Typ, [wie Anhängen.jpg,.jpeg
dem arrayaccept
wenn er feststelltimage/jpeg
in es]Lesen Sie Mozilla Doc hier
Derzeit nicht von allen Browsern gehen, dass tief spezifische Dateiendung, aber Sie alle unterstützen Dateitypen, wie Bild - /video -.
den 'accept' - Attribut ist nicht richtig unterstützt von einem der großen Browser.
Für die Formular-Validierung, die Sie verwenden sollten, php oder javascript.