html로 파일 업로드를 구현하는 것은 매우 간단하지만 <input type="file" ...>
태그에 추가 할 수있는 'accept'속성이 있음을 알았습니다 .
이 속성은 이미지 등으로 파일 업로드를 제한하는 방법으로 유용합니까? 그것을 사용하는 가장 좋은 방법은 무엇입니까?
또는 html 파일 입력 태그에 대해 파일 대화 상자에서 파일 형식을 제한하는 방법이 있습니까?
input type="file"
accept
html로 파일 업로드를 구현하는 것은 매우 간단하지만 <input type="file" ...>
태그에 추가 할 수있는 'accept'속성이 있음을 알았습니다 .
이 속성은 이미지 등으로 파일 업로드를 제한하는 방법으로 유용합니까? 그것을 사용하는 가장 좋은 방법은 무엇입니까?
또는 html 파일 입력 태그에 대해 파일 대화 상자에서 파일 형식을 제한하는 방법이 있습니까?
input type="file"
accept
답변:
이 accept
속성은 매우 유용합니다. 브라우저에게 현재에 허용 된 파일 만 표시하는 힌트 input
입니다. 일반적으로 사용자가이를 대체 할 수 있지만 기본적으로 사용자의 결과 범위를 좁히는 데 도움이되므로, 수백 가지의 다른 파일 형식을 거칠 필요없이 원하는 것을 정확하게 얻을 수 있습니다.
참고 : 이 예제는 현재 사양을 기반으로 작성되었으며 일부 또는 모든 브라우저에서 실제로 작동하지 않을 수 있습니다. 사양도 향후 변경 될 수 있으며 이로 인해 이러한 예가 깨질 수 있습니다.
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>
이
accept
속성은 사용자 에이전트에게 어떤 파일 형식이 허용되는지 힌트를 제공하도록 지정 될 수 있습니다.지정된 경우 속성 은 쉼표로 구분 된 토큰 세트 로 구성 되어야하며 각 토큰 은 다음 중 하나에 대해 대소 문자를 구분하지 않는 ASCII 여야합니다 .
끈
audio/*
- 사운드 파일이 허용됨을 나타냅니다.
끈
video/*
- 비디오 파일이 허용됨을 나타냅니다.
끈
image/*
- 이미지 파일이 허용됨을 나타냅니다.
매개 변수없이 유효한 MIME 타입
- 지정된 유형의 파일이 허용됨을 나타냅니다.
첫 문자가 U + 002E FULL STOP 문자 (.) 인 문자열
- 지정된 파일 확장자를 가진 파일이 허용됨을 나타냅니다.
accept='.jpg,.png,.gif,.pdf,.eps'
선택할 수 없었습니다. Chrome v20에서는 공백으로 구분되고 점 문자 등은 없지만 많은 변형을 시도했지만 mime 유형을 사용하여 크게 작동했습니다.accept='image/jpeg,image/gif,image/png,application/pdf,image/x-eps'
image/*
. 버머.
Value: A set of comma-separated strings, each of which is a valid MIME type, with no parameters.
MIME 유형 만 있습니다. 확장명이 없습니다. MIME 유형을 결정하는 것은 클라이언트의 책임입니다.
A string whose first character is a U+002E FULL STOP character (.) -- Indicates that files with the specified file extension are accepted.
video/*
Safari에서 mp4를 업로드 할 수 없다는 의미도 지정해야합니다.video/mp4
예,이 기능을 지원하는 브라우저에서 매우 유용하지만 "제한적"은 사용자가 원하지 않는 것을 업로드하지 못하도록 막는 것이 아니라 사용자에게 편의 (따라서 관련없는 파일로 압도되지 않음)입니다. 업로드 중입니다.
지원됩니다
여기에 사용할 수 있는 컨텐츠 유형 목록과 해당 파일 확장자가 있습니다 (물론 모든 파일 확장자를 사용할 수는 있음).
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
accept=".ttf"
예상대로 작동합니다.
2015 년 에 Chrome 과 Firefox 에서 모두 작동하도록 하는 유일한 방법 은 변형을 포함하여 지원하려는 가능한 모든 확장 프로그램을 배치하는 것입니다.
accept=".jpeg, .jpg, .jpe, .jfif, .jif"
Firefox 문제 : image/jpeg
MIME 유형을 사용하면 Firefox는 .jpg
파일이 표시 됩니다. 공통 .jpeg
이 좋지 않은 것처럼 매우 이상합니다 ...
무엇을 하든지 확장명이 많은 파일을 사용해보십시오. 어쩌면 그것은 심지어 OS에 달려 있습니다 ... accept
대소 문자를 구분하지 않지만 모든 브라우저에서 그렇지는 않을 것입니다.
accept에 관한 MDN 문서 는 다음과 같습니다 .
accept type 속성의 값이 file 인 경우이 속성은 서버가 허용하는 파일 유형을 나타내며, 그렇지 않으면 무시됩니다. 값은 쉼표로 구분 된 고유 컨텐츠 유형 지정자 목록이어야합니다.
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
RFC 1867 에 Accept 속성이 도입되어 파일 선택 컨트롤에 MIME 유형을 기반으로 파일 유형 필터링이 가능합니다. 그러나 2008 년 현재 대부분의 브라우저는이 속성을 사용하지 않습니다. 클라이언트 측 스크립팅을 사용하면 올바른 유형 (확장자)의 데이터를 제출하기 위해 일종의 확장 기반 검증을 수행 할 수 있습니다.
고급 파일 업로드를위한 다른 솔루션에는 SWFUpload 와 같은 Flash 영화 나 JUpload 와 같은 Java 애플릿이 필요 합니다.
Chrome에서 지원합니다. 유효성 검사에는 사용되지 않지만 OS에 대한 힌트 유형에 사용됩니다. 당신이 경우 accept="image/jpeg"
파일의 속성은 OS는 제안 된 형식의 파일을 표시 할 수 있습니다 업로드 할 수 있습니다.
accept="image/*"
Firefox, Chrome 및 Opera에서 작동 함을 확인합니다 .
accept="text/plain"
대신 사용하십시오 .
브라우저가이 속성을 사용하는 경우 사용자에게만 도움이되므로 서버에서 거부 된 것을 확인하기 위해 멀티 메가 바이트 파일을 업로드하지 않습니다
. <input type="hidden" name="MAX_FILE_SIZE" value="100000">
태그 와 동일 : 브라우저에서 사용하는 경우, 파일을 보내지 않지만 UPLOAD_ERR_FORM_SIZE
PHP 에서 (2) 오류를 발생시키는 오류가 발생합니다 (다른 언어로 어떻게 처리되는지 확실하지 않음).
이것은 사용자에게 도움이됩니다 . 물론 서버는 항상 파일 끝과 유형을 확인해야합니다. 클라이언트 측에서 이러한 값을 쉽게 조작 할 수 있습니다.
2008 년에 이것은 모바일 OS가 없기 때문에 중요하지 않았지만 지금은 매우 중요합니다.
허용 된 MIME 유형을 설정하면 예를 들어 Android 사용자에게 파일 입력이 허용하는 MIME의 컨텐츠를 제공 할 수있는 앱이있는 시스템 대화 상자가 제공됩니다. 모바일 장치의 파일 탐색기에서 파일 탐색이 느리고 스트레스가 많기 때문에 큰 이점 .
한 가지 중요한 점은 일부 모바일 브라우저 (Android 버전의 Chrome 36 및 Chrome 베타 37 기반)는 확장 프로그램 및 여러 MIME 유형에 대한 앱 필터링을 지원하지 않는다는 것입니다.