Meine input-Datei mit akzeptiert: accept="image/gif, image/jpg, image/jpeg, image/png", erlaubt zu wählen, anderen extensions
Ich habe ein Formular, wählen Sie die Bilder für eine Galerie, und ich möchte, um Benutzern zu erlauben, wählen Sie nur jpg -, gif-und png-Bildformate.
Und jetzt, zum testen, ich ändere die Erweiterung eines Bildes .bmp wie "image1.bmp", und wenn ich auf in meine input-Datei und wählen Sie ein Bild, das "image1.bmp" versteckt ist, aber Wenn ich wählen Sie "alle Dateien anzeigen", "image1.bmp" angezeigt, und ich kann wählen Sie diese "image1.bmp" aus und senden Sie dieses Bild in meine form. Und Im einfügen dieses Bild mit diesem format auf Datenbank.
Dies ist normal mit accept="image/gif, image/jpg, image/jpeg, image/png"
??
Weil das, was ich wollte, zu blockieren, alle Formate, nicht gif,jpg oder png.
Habe ich diese input-Datei:
<input type="file" name="img[]" multiple="multiple" accept="image/gif, image/jpg, image/jpeg, image/png" />
InformationsquelleAutor UserX | 2014-06-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist Häufig browser-Verhalten. Browser, die das unterstützen
accept
- Attribut verwenden, um erstellen Sie eine ersten Datei-filter, aber nicht verhindern, dass der Benutzer ändern oder entfernen Sie den filter und damit die Auswahl und der übermittlung aller Dateien, die Sie möchten. Der Zweck des Attributs ist, um Benutzern zu helfen, wählen Sie die Dateien der entsprechenden Typen.Welche Browser sollte tun, ist weniger klar. HTML 4.01 sagt , dass die
accept
- Attribut “gibt eine durch Kommas getrennte Liste der Inhaltstypen, die von einem server die Verarbeitung dieser form behandeln Sie richtig. Benutzerprogramme können diese Informationen verwenden, um herauszufiltern, die nicht-konforme Dateien, wenn der Aufforderung ein Benutzer, um Dateien auszuwählen, die an den server gesendet werden". Der Verweis auf server-Seite Verarbeitung kann in die Irre führen. Das Attribut wirkt sich auf client-Seite (browser -) Verhalten nur. Die Absicht ist zu sagen, dass der Wert des Attributs geschrieben werden sollen, nach welchen Datei-Typ(en) erwartet von dem Benutzer; es ist mehr oder weniger selbstverständlich, daß der server-Seite, form handler geschrieben werden sollte, so dass es ist fähig zur Behandlung der angegebene Typ(s).HTML5-LC ist Ausführlicher. Es sagt, dass das Attribut "angegeben werden kann, um die Bereitstellung von Benutzer-agents mit einem Hauch von welche Datei-Typen werden akzeptiert". Anschließend wird beschrieben, wie es verwendet werden könnte, die von einem browser, um eine angemessene Benutzer-Schnittstelle. Man sagt auch: "User-agents sollten verhindern, dass die Benutzer die Auswahl von Dateien, die werden nicht angenommen, indem ein (oder mehrere) dieser Token." Dies kann sinnvoll sein, aber Browser, die eigentlich nicht tun. Selbst wenn Sie es Taten, das Attribut würde nicht als eine Sicherheitsmaßnahme jeglicher Art (da könnte ein Benutzer Bearbeiten Sie das Formular, oder schreiben eine form von seiner eigenen, oder verwenden Sie einen browser, der ignoriert die
accept
- Attribut). Sein Zweck ist der Schutz normaler Benutzer vom machen von Fehlern, wie die übermittlung einer Datei von einem Typ, der wird zurückgewiesen werden von dem server-side-handler.(Browser interpretieren die
accept
Attribut-Wert in der sehr einfachen Weise. Sie arbeiten an Erweiterungen, so dass, wenn Sie den Namen einer GIF-Datei oder einer einfachen text-Datei oder eine binäre Programmdatei, so dass Ihre Bezeichnung endet mit .png, Sie behandeln es als PNG-Datei, statt der Prüfung der Inhalt der Datei. Die .bmp-Erweiterung ist problematisch, da es allgemein heißt, Windows-Bitmap, für das es keinen registrierten MIME-Typ; - Browsern zu behandeln kann die nicht-Standard-notation image/bmp entsprechende .bmp.)Können Sie nicht blockieren senden von Dateien. Was Sie tun können, ist die Auseinandersetzung mit Dateien ordnungsgemäß der server-Seite, und da sollten Sie natürlich nicht verlassen Sie sich auf Erweiterungen, sondern erkennen die Typen aus der Datei content.
InformationsquelleAutor Jukka K. Korpela
Klar, wenn du auf "show all" kann sich offensichtlich sehen andere Dateien.
Ihre Frage ist nicht ganz verbergen oder zeigen, aber filter an der Zeit hochladen, haben Sie zwei Lösungen:
1) SERVER-SEITE:
Mit php (nur ein Beispiel) und regExp:
2) CLIENTE-SEITE:
Mit javascript verwenden determinater lib:
https://github.com/rnicholus/determinater
InformationsquelleAutor Guilherme Nascimento
Ändern der Erweiterung nicht ändern Sie den MIME-Typ der Datei. Mach den gleichen test mit einem tatsächlichen BMP-Datei.
InformationsquelleAutor GAEfan
Dem accept-Attribut ist nicht allgemein akzeptiert. Chrome und IE10+ unterstützen. Wenn Sie etwas anderes, wie Firefox, Safari oder Opera, funktioniert es nicht. Lesen Sie hier mehr: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input
Dies bedeutet, dass wie Guilherme vorgeschlagen, benötigen Sie eine client-Seite oder server-Seite überprüfen. Ich würde vorschlagen, beide. Auf Client-Seite wird sofort sagen, dass ein argloser user, während der server-Seite ermöglichen das filtern von bösartigen Benutzern. Aber Vorsicht, es gibt einige Debatte darüber, wie die MIME-Typ-Erkennung ist nicht gerade zuverlässig. Sie können Google, wenn Sie möchten, um mehr darüber zu erfahren.
InformationsquelleAutor David