Attribut ‘akzeptieren’ der Dateieingabe – ist es nützlich?

Lesezeit: 11 Minuten

Attribut akzeptieren der Dateieingabe ist es nutzlich
Darren Oster

Das Implementieren eines Datei-Uploads unter HTML ist ziemlich einfach, aber ich habe gerade bemerkt, dass es ein ‘accept’-Attribut gibt, das der hinzugefügt werden kann <input type="file" ...> Schild.

Ist dieses Attribut nützlich, um das Hochladen von Dateien auf Bilder usw. zu beschränken? Was ist der beste Weg, es zu verwenden?

Gibt es alternativ eine Möglichkeit, Dateitypen, vorzugsweise im Dateidialog, für ein HTML-Dateieingabe-Tag einzuschränken?

  • In Bezug auf die Antwort von Li Huan lautet der richtige Link zu w3school: w3schools.com/TAGS/att_input_accept.asp

    – PixEye

    21. Dezember 2011 um 16:02 Uhr

  • Ich habe gerade versucht, „accept=application/x-gzip“ zu verwenden, und es hat mit „Chrome 19.0.1084.52“ funktioniert, aber in „FF 13.0“ und „IE 8.0.6001“ funktioniert es nicht.

    – Jeach

    14. Juni 2012 um 19:26 Uhr


  • Kasse jsfiddle.net/jhfrench/cukjxnp6/embedded/result für eine Möglichkeit zur Verbesserung input type="file" um das nur zu bestätigen accepted Dateitypen können ausgewählt werden.

    – Jeromy French

    23. Dezember 2015 um 23:07 Uhr

Attribut akzeptieren der Dateieingabe ist es nutzlich
0b10011

Die accept Attribut ist unglaublich nützlich. Es ist ein Hinweis für Browser, nur Dateien anzuzeigen, die für die aktuelle zulässig sind input. Obwohl es normalerweise von Benutzern überschrieben werden kann, hilft es, die Ergebnisse für Benutzer standardmäßig einzugrenzen, sodass sie genau das bekommen, wonach sie suchen, ohne hundert verschiedene Dateitypen durchsuchen zu müssen.

Verwendungszweck

Notiz: Diese Beispiele wurden basierend auf der aktuellen Spezifikation geschrieben und funktionieren möglicherweise nicht in allen (oder irgendwelchen) Browsern. Die Spezifikation kann sich in Zukunft auch ändern, wodurch diese Beispiele beschädigt werden könnten.

h1 { font-size: 1em; margin:1em 0; }
h1 ~ h1 { border-top: 1px solid #ccc; padding-top: 1em; }
<h1>Match all image files (image/*)</h1>
<p><label>image/* <input type="file" accept="image/*"></label></p>

<h1>Match all video files (video/*)</h1>
<p><label>video/* <input type="file" accept="video/*"></label></p>

<h1>Match all audio files (audio/*)</h1>
<p><label>audio/* <input type="file" accept="audio/*"></label></p>

<h1>Match all image files (image/*) and files with the extension ".someext"</h1>
<p><label>.someext,image/* <input type="file" accept=".someext,image/*"></label></p>

<h1>Match all image files (image/*) and video files (video/*)</h1>
<p><label>image/*,video/* <input type="file" accept="image/*,video/*"></label></p>

Aus der HTML-Spezifikation (Quelle)

Die accept -Attribut kann angegeben werden, um Benutzerprogrammen einen Hinweis darauf zu geben, welche Dateitypen akzeptiert werden.

Falls angegeben, muss das Attribut aus a bestehen
Satz von durch Kommas getrennten Tokendie jeweils ein sein müssen
ASCII-Groß-/Kleinschreibung wird nicht beachtet
Übereinstimmung mit einem der folgenden:

Die Saite audio/*

  • Zeigt an, dass Audiodateien akzeptiert werden.

Die Saite video/*

  • Zeigt an, dass Videodateien akzeptiert werden.

Die Saite image/*

  • Zeigt an, dass Bilddateien akzeptiert werden.

EIN gültiger MIME-Typ ohne Parameter

  • Gibt an, dass Dateien des angegebenen Typs akzeptiert werden.

Eine Zeichenfolge, deren erstes Zeichen ein U+002E FULL STOP-Zeichen (.)

  • Gibt an, dass Dateien mit der angegebenen Dateierweiterung akzeptiert werden.

  • Ich musste JPG-, PNG-, GIF-, PDF- und EPS-Dateien akzeptieren, aber accept='.jpg,.png,.gif,.pdf,.eps' ließ keine Auswahl zu. Ich habe viele Variationen ausprobiert – Leerzeichen getrennt, keine Punktzeichen usw., aber keine Würfel in Chrome v20, also habe ich die Mime-Typen verwendet und es hat großartig funktioniert: accept='image/jpeg,image/gif,image/png,application/pdf,image/x-eps'

    – Charlie Schliesser

    27. Juni 2012 um 16:49 Uhr


  • Ich kann das obige nur in Chrome zum Laufen bringen. In Firefox 13 kann ich nicht mehrere Dateitypen zum Laufen bringen (durch Kommas getrennt oder auf andere Weise), abgesehen davon, dass ich einen einzelnen Platzhaltertyp wie mache image/*. Schade.

    – Charlie Schliesser

    27. Juni 2012 um 17:31 Uhr

  • Laut Spezifikation: Value: A set of comma-separated strings, each of which is a valid MIME type, with no parameters. Nur Mime-Typen. Keine Erweiterungen. Es ist Sache des Clients, den MIME-Typ zu bestimmen.

    – Rudie

    31. August 2013 um 13:48 Uhr

  • Ich bin mir nicht sicher, woher Sie Ihre Informationen beziehen, aber in der Spezifikation, auf die ich in der Antwort verlinkt habe, ist dies als absolut gültig aufgeführt: A string whose first character is a U+002E FULL STOP character (.) -- Indicates that files with the specified file extension are accepted.

    – 0b10011

    31. August 2013 um 15:57 Uhr

  • video/* bedeutet, dass Sie mp4 nicht in Safari hochladen können, müssen Sie auch angeben video/mp4

    – Kit Sunde

    10. Dezember 2013 um 2:04 Uhr

1646313130 429 Attribut akzeptieren der Dateieingabe ist es nutzlich
Bilderstürmer

Ja, es ist äußerst nützlich in Browsern, die es unterstützen, aber die „Einschränkung“ dient der Bequemlichkeit für Benutzer (damit sie nicht mit irrelevanten Dateien überhäuft werden) und nicht, um sie daran zu hindern, Dinge hochzuladen, die Sie nicht möchten Hochladen.

Es wird darin unterstützt

  • Chrom 16+
  • Safari6+
  • Firefox 9+
  • IE 10 +
  • Oper 11 +

Hier ist eine Liste von Inhaltstypen Sie können damit verwenden, gefolgt von den entsprechenden Dateierweiterungen (obwohl Sie natürlich jede Dateierweiterung verwenden können):

application/envoy   evy
application/fractals    fif
application/futuresplash    spl
application/hta hta
application/internet-property-stream    acx
application/mac-binhex40    hqx
application/msword  doc
application/msword  dot
application/octet-stream    *
application/octet-stream    bin
application/octet-stream    class
application/octet-stream    dms
application/octet-stream    exe
application/octet-stream    lha
application/octet-stream    lzh
application/oda oda
application/olescript   axs
application/pdf pdf
application/pics-rules  prf
application/pkcs10  p10
application/pkix-crl    crl
application/postscript  ai
application/postscript  eps
application/postscript  ps
application/rtf rtf
application/set-payment-initiation  setpay
application/set-registration-initiation setreg
application/vnd.ms-excel    xla
application/vnd.ms-excel    xlc
application/vnd.ms-excel    xlm
application/vnd.ms-excel    xls
application/vnd.ms-excel    xlt
application/vnd.ms-excel    xlw
application/vnd.ms-outlook  msg
application/vnd.ms-pkicertstore sst
application/vnd.ms-pkiseccat    cat
application/vnd.ms-pkistl   stl
application/vnd.ms-powerpoint   pot
application/vnd.ms-powerpoint   pps
application/vnd.ms-powerpoint   ppt
application/vnd.ms-project  mpp
application/vnd.ms-works    wcm
application/vnd.ms-works    wdb
application/vnd.ms-works    wks
application/vnd.ms-works    wps
application/winhlp  hlp
application/x-bcpio bcpio
application/x-cdf   cdf
application/x-compress  z
application/x-compressed    tgz
application/x-cpio  cpio
application/x-csh   csh
application/x-director  dcr
application/x-director  dir
application/x-director  dxr
application/x-dvi   dvi
application/x-gtar  gtar
application/x-gzip  gz
application/x-hdf   hdf
application/x-internet-signup   ins
application/x-internet-signup   isp
application/x-iphone    iii
application/x-javascript    js
application/x-latex latex
application/x-msaccess  mdb
application/x-mscardfile    crd
application/x-msclip    clp
application/x-msdownload    dll
application/x-msmediaview   m13
application/x-msmediaview   m14
application/x-msmediaview   mvb
application/x-msmetafile    wmf
application/x-msmoney   mny
application/x-mspublisher   pub
application/x-msschedule    scd
application/x-msterminal    trm
application/x-mswrite   wri
application/x-netcdf    cdf
application/x-netcdf    nc
application/x-perfmon   pma
application/x-perfmon   pmc
application/x-perfmon   pml
application/x-perfmon   pmr
application/x-perfmon   pmw
application/x-pkcs12    p12
application/x-pkcs12    pfx
application/x-pkcs7-certificates    p7b
application/x-pkcs7-certificates    spc
application/x-pkcs7-certreqresp p7r
application/x-pkcs7-mime    p7c
application/x-pkcs7-mime    p7m
application/x-pkcs7-signature   p7s
application/x-sh    sh
application/x-shar  shar
application/x-shockwave-flash   swf
application/x-stuffit   sit
application/x-sv4cpio   sv4cpio
application/x-sv4crc    sv4crc
application/x-tar   tar
application/x-tcl   tcl
application/x-tex   tex
application/x-texinfo   texi
application/x-texinfo   texinfo
application/x-troff roff
application/x-troff t
application/x-troff tr
application/x-troff-man man
application/x-troff-me  me
application/x-troff-ms  ms
application/x-ustar ustar
application/x-wais-source   src
application/x-x509-ca-cert  cer
application/x-x509-ca-cert  crt
application/x-x509-ca-cert  der
application/ynd.ms-pkipko   pko
application/zip zip
audio/basic au
audio/basic snd
audio/mid   mid
audio/mid   rmi
audio/mpeg  mp3
audio/x-aiff    aif
audio/x-aiff    aifc
audio/x-aiff    aiff
audio/x-mpegurl m3u
audio/x-pn-realaudio    ra
audio/x-pn-realaudio    ram
audio/x-wav wav
image/bmp   bmp
image/cis-cod   cod
image/gif   gif
image/ief   ief
image/jpeg  jpe
image/jpeg  jpeg
image/jpeg  jpg
image/pipeg jfif
image/svg+xml   svg
image/tiff  tif
image/tiff  tiff
image/x-cmu-raster  ras
image/x-cmx cmx
image/x-icon    ico
image/x-portable-anymap pnm
image/x-portable-bitmap pbm
image/x-portable-graymap    pgm
image/x-portable-pixmap ppm
image/x-rgb rgb
image/x-xbitmap xbm
image/x-xpixmap xpm
image/x-xwindowdump xwd
message/rfc822  mht
message/rfc822  mhtml
message/rfc822  nws
text/css    css
text/h323   323
text/html   htm
text/html   html
text/html   stm
text/iuls   uls
text/plain  bas
text/plain  c
text/plain  h
text/plain  txt
text/richtext   rtx
text/scriptlet  sct
text/tab-separated-values   tsv
text/webviewhtml    htt
text/x-component    htc
text/x-setext   etx
text/x-vcard    vcf
video/mpeg  mp2
video/mpeg  mpa
video/mpeg  mpe
video/mpeg  mpeg
video/mpeg  mpg
video/mpeg  mpv2
video/quicktime mov
video/quicktime qt
video/x-la-asf  lsf
video/x-la-asf  lsx
video/x-ms-asf  asf
video/x-ms-asf  asr
video/x-ms-asf  asx
video/x-msvideo avi
video/x-sgi-movie   movie
x-world/x-vrml  flr
x-world/x-vrml  vrml
x-world/x-vrml  wrl
x-world/x-vrml  wrz
x-world/x-vrml  xaf
x-world/x-vrml  xof

  • Ich sehe nichts für Schriftarten wie application/font-woff oder application/x-font-ttf.

    – Triynko

    14. Dezember 2015 um 15:46 Uhr

  • @Triynko Ich habe das gleiche Problem, aber ich sehe, dass z. B. Chrome eine ttf-Schriftart als “application/octet-stream” hochlädt, sodass diese nicht in einem Dateieingabeelement verwendet werden kann …

    – estani

    18. September 2019 um 9:00 Uhr

  • Finden Sie einfach heraus, dass accept auch Dateiendungen verwenden kann! damit accept=".ttf" funktioniert wie erwartet.

    – estani

    18. September 2019 um 9:07 Uhr

1646313131 662 Attribut akzeptieren der Dateieingabe ist es nutzlich
Christoph Roussy

Im Jahr 2015 der einzige Weg Ich habe festgestellt, dass es für beide funktioniert Chrom und Feuerfuchs ist, alle möglichen Erweiterungen anzugeben, die Sie unterstützen möchten, einschließlich Varianten (einschließlich des Punktes davor!):

accept=".jpeg, .jpg, .jpe, .jfif, .jif"

Probleme mit Firefox: Verwendung der image/jpeg MIME-Typ Firefox zeigt nur .jpg Dateien, sehr seltsam, als ob die gemeinsamen .jpeg war nicht ok…

Was auch immer Sie tun, versuchen Sie es unbedingt mit Dateien mit vielen verschiedenen Erweiterungen. Vielleicht hängt es sogar vom Betriebssystem ab … nehme ich an accept Groß-/Kleinschreibung wird nicht beachtet, aber vielleicht nicht in jedem Browser.

Hier ist das MDN-Dokumentation zum Akzeptieren:

accept Wenn der Wert des type-Attributs file ist, zeigt dieses Attribut die Dateitypen an, die der Server akzeptiert, andernfalls wird es ignoriert. Der Wert muss eine durch Kommas getrennte Liste eindeutiger Inhaltstypbezeichner sein:

    A file extension starting with the STOP character (U+002E). (e.g. .jpg, .png, .doc).
    A valid MIME type with no extensions.
    audio/* representing sound files. HTML5
    video/* representing video files. HTML5
    image/* representing image files. HTML5

  • Dies ist die beste Antwort, da sie die Cross-Browser-Kompatibilität anspricht.

    – mbomb007

    7. Februar 2017 um 17:32 Uhr

  • Diese Antwort ist gut. Denken Sie daran, das “STOP”-Zeichen ‘.’ einzufügen. Das war mein Problem.

    – Pilzanthrax

    12. Dezember 2017 um 19:45 Uhr

  • warum nicht accept="image/jpeg, .jfif, .jif"?

    – Alex78191

    16. November 2021 um 11:15 Uhr

  • @Alex78191 hast du gelesen was ich geschrieben habe? Das hat .jpeg nicht akzeptiert, ich musste .jpeg einfügen, aber vielleicht hat sich das seit 2015 geändert …

    – Christoph Roussy

    17. November 2021 um 9:31 Uhr

  • @ChristopheRoussy Ich habe nicht gelesen.

    – Alex78191

    17. November 2021 um 10:05 Uhr

1646313131 171 Attribut akzeptieren der Dateieingabe ist es nutzlich
Christian C. Salvado

Accept-Attribut wurde in eingeführt RFC 1867, um die Dateitypfilterung basierend auf dem MIME-Typ für das Dateiauswahlsteuerelement zu aktivieren. Aber seit 2008 verwenden die meisten, wenn nicht alle Browser dieses Attribut nicht mehr. Mithilfe von clientseitigem Skripting können Sie eine Art erweiterungsbasierte Validierung durchführen, um Daten des richtigen Typs (Erweiterung) zu übermitteln.

Andere Lösungen für erweitertes Hochladen von Dateien erfordern Flash-Filme wie z SWF-Upload oder Java-Applets wie JHochladen.

Es wird von Chrome unterstützt. Es soll nicht zur Validierung verwendet werden, sondern zum Typhinweis des Betriebssystems. Wenn Sie eine haben accept="image/jpeg" -Attribut in einem Datei-Upload kann das Betriebssystem nur Dateien des vorgeschlagenen Typs anzeigen.

  • Ich bestätige das accept="image/*" funktioniert auf Firefox, Chrome und Opera.

    – remi.gaubert

    27. Dezember 2011 um 15:16 Uhr

  • Es funktioniert nicht in Safari, ich verwende Safari 5.1.7 in Windows

    – und

    2. April 2013 um 10:31 Uhr

  • @MMMMS Sie müssen den MIME-Typ und nicht die Dateierweiterung angeben. Verwenden accept="text/plain" stattdessen.

    – mbomb007

    8. August 2016 um 17:03 Uhr

1646313131 643 Attribut akzeptieren der Dateieingabe ist es nutzlich
Kevin Gebühr

Es ist ein paar Jahre her, und Chrome macht sich dieses Attribut zumindest zunutze. Dieses Attribut ist vom Standpunkt der Benutzerfreundlichkeit aus sehr nützlich, da es die unnötigen Dateien für den Benutzer herausfiltert und seine Erfahrung reibungsloser macht. Der Benutzer kann jedoch immer noch “alle Dateien” aus dem Typ auswählen (oder den Filter anderweitig umgehen), daher sollten Sie die Datei immer dort validieren, wo sie tatsächlich verwendet wird; Wenn Sie es auf dem Server verwenden, validieren Sie es dort, bevor Sie es verwenden. Der Benutzer kann jederzeit jedes clientseitige Skripting umgehen.

  • Ich bestätige das accept="image/*" funktioniert auf Firefox, Chrome und Opera.

    – remi.gaubert

    27. Dezember 2011 um 15:16 Uhr

  • Es funktioniert nicht in Safari, ich verwende Safari 5.1.7 in Windows

    – und

    2. April 2013 um 10:31 Uhr

  • @MMMMS Sie müssen den MIME-Typ und nicht die Dateierweiterung angeben. Verwenden accept="text/plain" stattdessen.

    – mbomb007

    8. August 2016 um 17:03 Uhr

1646313132 400 Attribut akzeptieren der Dateieingabe ist es nutzlich
Philho

Wenn der Browser dieses Attribut verwendet, dient es nur als Hilfe für den Benutzer, damit er keine Multi-Megabyte-Datei hochlädt, nur um zu sehen, dass sie vom Server abgelehnt wird …
Gleiches gilt für die <input type="hidden" name="MAX_FILE_SIZE" value="100000"> -Tag: Wenn der Browser es verwendet, sendet er die Datei nicht, sondern es entsteht ein Fehler UPLOAD_ERR_FORM_SIZE (2) Fehler in PHP (nicht sicher, wie es in anderen Sprachen gehandhabt wird).
Beachten Sie, dass dies Hilfen für die sind Benutzer. Natürlich muss der Server auf seiner Seite immer den Typ und die Größe der Datei überprüfen: Es ist einfach, diese Werte auf der Client-Seite zu manipulieren.

923720cookie-checkAttribut ‘akzeptieren’ der Dateieingabe – ist es nützlich?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy