L’atsortingbut ‘accept’ de l’entrée de fichier – est-ce utile?

Implémenter un téléchargement de fichier sous HTML est assez simple, mais je viens de remarquer qu’il existe un atsortingbut ‘accept’ qui peut être ajouté à la .

Cet atsortingbut est-il utile pour limiter les téléchargements de fichiers aux images, etc.? Quelle est la meilleure façon de l’utiliser?

Existe-t-il un moyen de limiter les types de fichiers, de préférence dans la boîte de dialog de fichier, pour une balise de saisie de fichier HTML?

    L’atsortingbut accept est incroyablement utile. Il est conseillé aux navigateurs d’afficher uniquement les fichiers autorisés pour l’ input actuelle. Bien qu’il puisse généralement être remplacé par les utilisateurs, il permet de réduire les résultats par défaut pour les utilisateurs. Ainsi, ils peuvent obtenir exactement ce qu’ils recherchent sans devoir parcourir une centaine de types de fichiers différents.

    Usage

    Remarque: Ces exemples ont été écrits sur la base de la spécification actuelle et peuvent ne pas fonctionner dans tous les navigateurs. La spécification peut également changer dans le futur, ce qui pourrait briser ces exemples.

     h1 { font-size: 1em; margin:1em 0; } h1 ~ h1 { border-top: 1px solid #ccc; padding-top: 1em; } 
     

    Match all image files (image/*)

    Match all video files (video/*)

    Match all audio files (audio/*)

    Match all image files (image/*) and files with the extension ".someext"

    Match all image files (image/*) and video files (video/*)

    Oui, il est extrêmement utile dans les navigateurs qui le prennent en charge, mais la “limitation” est pratique pour les utilisateurs (ils ne sont donc pas submergés par des fichiers non pertinents) plutôt que de les empêcher de télécharger des choses que vous ne voulez pas. Téléchargement.

    Il est pris en charge dans

    • Chrome 16 +
    • Safari 6 +
    • Firefox 9 +
    • IE 10 +
    • Opera 11 +

    Voici une liste des types de contenu que vous pouvez utiliser, suivis des extensions de fichiers correspondantes (bien que vous puissiez bien entendu utiliser toute extension de fichier):

     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-certificatees p7b application/x-pkcs7-certificatees 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 

    L’atsortingbut d’acceptation a été introduit dans la RFC 1867 , avec l’intention d’activer le filtrage de type fichier basé sur le type MIME pour le contrôle de sélection de fichier. Mais à partir de 2008, la plupart des navigateurs, sinon tous, n’utilisent pas cet atsortingbut. À l’aide de scripts côté client, vous pouvez effectuer une sorte de validation basée sur l’extension, pour soumettre des données de type correct (extension).

    D’autres solutions pour le téléchargement avancé de fichiers nécessitent des animations Flash telles que SWFUpload ou Java Applets comme JUpload .

    En 2015, la seule façon de le faire fonctionner pour Chrome et Firefox est de mettre toutes les extensions possibles à prendre en charge, y compris des variantes:

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

    Problème avec FireFox : Utilisation du type MIME image/jpeg FireFox affichera uniquement les fichiers .jpg , ce qui est très étrange, comme si le fichier .jpeg n’était pas correct …

    Quoi que vous fassiez, assurez-vous d’essayer avec des fichiers ayant plusieurs extensions différentes. Peut-être que cela dépend même de l’OS …

    Je suppose que l’ accept est insensible à la casse, mais peut-être pas dans tous les navigateurs.

    Voici les documents MDN sur accepter :

    accept Si la valeur de l’atsortingbut type est file, alors cet atsortingbut indiquera les types de fichiers acceptés par le serveur, sinon il sera ignoré. La valeur doit être une liste séparée par des virgules de spécificateurs de type de contenu uniques:

      A file extension starting with the STOP character (U+002E). (eg .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 

    Il est pris en charge par Chrome. Il n’est pas censé être utilisé pour la validation, mais pour le type faisant allusion au système d’exploitation. Si vous avez un atsortingbut accept="image/jpeg" dans un fichier téléchargé, le système d’exploitation ne peut afficher que les fichiers du type suggéré.

    Cela fait quelques années, et Chrome utilise au moins cet atsortingbut. Cet atsortingbut est très utile du sharepoint vue de la facilité d’utilisation, car il filtre les fichiers inutiles pour l’utilisateur, ce qui rend son expérience plus fluide. Cependant, l’utilisateur peut toujours sélectionner “tous les fichiers” à partir du type (ou contourner le filtre), vous devez donc toujours valider le fichier où il est réellement utilisé; Si vous l’utilisez sur le serveur, validez-le avant de l’utiliser. L’utilisateur peut toujours ignorer tout script côté client.

    Si le navigateur utilise cet atsortingbut, il ne sert que d’aide à l’utilisateur, il ne télécharge donc pas un fichier de plusieurs mégaoctets juste pour le voir rejeté par le serveur …
    Idem pour la : si le navigateur l’utilise, il n’enverra pas le fichier mais une erreur provoquant une erreur UPLOAD_ERR_FORM_SIZE (2) en PHP (non sûr comment il est géré dans d’autres langues).
    Notez que ce sont des aides pour l’ utilisateur . Bien sûr, le serveur doit toujours vérifier le type et la taille du fichier à sa fin: il est facile de modifier ces valeurs du côté client.

    En 2008, cela n’était pas important en raison de l’absence de systèmes d’exploitation mobiles.

    Lorsque vous définissez des types de mime acceptés, l’utilisateur reçoit par exemple un dialog système avec des applications qui peuvent lui fournir le contenu de mime accepté par l’entrée de fichier. La navigation dans les fichiers de l’explorateur de fichiers est lente et souvent stressante. .

    Une chose importante est que certains navigateurs mobiles (basés sur la version Android de Chrome 36 et Chrome Beta 37) ne prennent pas en charge le filtrage des applications sur les extensions et les types MIME.