Eingabe accept="image / png" funktioniert in Firefox nicht

8

jsbin

%Vor%

Es wird erwartet, dass der Dateidialog nur png-Dateien akzeptiert. Aber accept="image/png" funktioniert nicht mit Firefox. Wie kann ich es schaffen? P.S. Es funktioniert in Chrome.

    
Frank Fang 01.01.2014, 06:56
quelle

5 Antworten

8

Offenbar gibt es ein Problem mit bestimmten Erweiterungstypen für Firefox. Sie können mehr über diesen Fehler hier lesen.

Das letzte Update zu diesem Fehler stammt von vor ein paar Monaten und scheint noch nicht gelöst zu sein. Im Moment würde ich eine serverseitige Dateiprüfung vorschlagen, oder zumindest können Sie JavaScript verwenden, um die Dateierweiterung zu überprüfen, bevor sie hochgeladen wird.

    
Elad Stern 01.01.2014, 07:31
quelle
1

Wie andere Antworten beschreiben, unterstützt Firefox type="image/png" noch nicht. Stattdessen ignoriert es das Attribut und wendet keinen Dateifilter an. Die Verwendung von type="image/*" würde funktionieren, aber dann würde der Filter alle Bilddateien zulassen.

Die beste praktische Problemumgehung ist die Verwendung von JavaScript-Code, der nach der Dateinamenerweiterung sucht. Es beweist nicht wirklich etwas, aber fast 100% ige Sicherheit, PNG-Dateien haben Namen, die mit .png enden und andere Dateien nicht. Beispielcode (ersetzen Sie das unhöfliche alert durch eine Funktion, die zu Ihrem UI-Design passt):

%Vor%

Der Nachteil ist, dass Firefox, wenn Scripting deaktiviert ist, jede Datei akzeptiert, auch wenn accept="image/*" zumindest die Dateien auf Bilddateien beschränken würde. Das Deaktivieren von JavaScript ist jedoch wahrscheinlich selten genug, verglichen mit dem Problem des Browser-Sniffing, das benötigt wird, um verschiedene type -Attribute an verschiedene Browser zu senden.

Sie sollten natürlich die Dateitypen auf dem Server überprüfen, bevor Sie etwas mit den Dateien machen, da jedes Filtern von Dateitypen versehentlich oder absichtlich umgangen werden kann -

    
Jukka K. Korpela 01.01.2014 17:58
quelle
1

Damit Firefox das accept-Attribut teilweise respektiert, können Sie diesen Code verwenden, der aus der Antwort von Jukka K. Korpela kopiert und modifiziert wurde (danke! +1), mit dem zusätzlichen Bonus, das Original-Attribut accept, nicht juts für PNGs zu respektieren. nicht nur eine Erweiterung.

%Vor%

Sie können es wie folgt verwenden:

%Vor%

Es funktioniert nicht mit Mime-Typen oder -Gruppen wie image/* (es ignoriert sie einfach), sondern könnte modifiziert werden, um eine Liste von Erweiterungen für jeden Mime-Typ hinzuzufügen [wie% ce_de% an das Array anhängen .jpg,.jpeg wenn es accept darin findet]

    
FrancescoMM 26.11.2014 17:15
quelle
0

Mozilla Doc hier lesen Zur Zeit unterstützen nicht alle Browser die spezielle Dateierweiterung, aber alle unterstützen einen Dateityp wie Bild / Video.

%Vor%     
Godinall 01.01.2014 07:31
quelle
-2

Das Attribut 'accept' wird von keinem der gängigen Browser richtig unterstützt.
Für die Formularvalidierung sollten Sie PHP oder Javascript verwenden.

    
user689 18.02.2014 17:49
quelle

Tags und Links