Multipurpose Internet Mail Extensions의 약자로 초기 MIME은 용어 그대로의
의미로써 이메일을 보낼 때 함께 보내지는 첨부파일을 텍스트 문서로 변환(인코딩)해서
전송하기 위해 개발 되었다.
현재 HTTP 프로토콜을 이용한 웹에서 서버가 클라이언트에게 보내준 문서의 종류들을
정의한 걸로 사용되고 있다.
type/subtype
MIME 타입의 구조는 '/'로 구분된 두 개의 문자열인 타입과 서브타입으로 구성된다.
(스페이스 허용x)
Type은 카테고리를 나타내며 개별 혹은 멀티파트 타입이 될 수 있다.
(SubType은 각각의 타입에 한정된다)
MIME 타입은 대소문자를 구분하지 않지만 전통적으로 소문자로 쓰여진다.
HTTP 헤더에는 메시지 전송시에 사용되는 여러가지 정보들이 표시되어 있는데
이 여러 정보들 중에 하나로 Content-Type이 있다.
타입 | 설 명 | 일반적인 서브타입 예시 |
---|---|---|
text | 텍스트를 포함하는 모든 문서를 나타내며, 이론상으로는 인간이 읽을 수 있어야 한다. | text/plain, text/html, text/css, text/javascript |
img | 모든 종류의 이미지를 나타내고 애니메이션되는 이미지가 이미지 타입에 포함되긴 하지만, 비디오는 포함x | image/gif,image/png,image/jpeg,image/bmp, image/webp |
audio | 모든 종류의 오디오 파일을 나타낸다. | audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav |
video | 모든 종류의 비디오 파일을 나타낸다. | video/webm, video/ogg |
application | 모든 종류의 이진 데이터를 나타낸다. | applcation/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf |
multipart/alternative
multipart/byteranges
multipart/digest
multipart/form-data
multipart/mixed
multipart/parallel
multipart/related
multipart/report
multipart/signed
multipart/encrypted
multipart Type을 통해 MIME은 트리 구조의 메세지 형식을 정의할 수 있다.
multipart/form-data
이 방식은 form 요소가 파일이나 이미지를 서버로 전송할 때 주로 사용한다.
일반적인 form의 submit에 의한 데이터들의 Content-type은 application/x-www-form-urlencoded 이다.
그런데 파일 업로드시 자신이 찍은 사진을 올리는 form의 경우, 사진에 대한 설명을 위한 input과 사진 파일을 위한 input 2개가 들어간다.
하나는 Content-type이 applcation/x-www-form-urlencoded가 될 것이고 사진 파일은 image/jpeg가 될 것이다. 한 body에서 이 2 종류의 데이터를
구분에서 넣어주는 방법이 필요해짐에 따라 multipart Type이 등장한것이다.
application/octet-stream
이진 파일의 기본 타입으로 브라우저에서 보통 자동으로 실행하지 않거나 실행해야 할지 묻는다.
Conten-Disposition값이 attachement와 함께 설정되면 브라우저는 파일을 저장 또는 다른이름으로 저장 여부를 체크한다.
text/plain
테스트 파일의 기본 타입
image/png, image/Jpeg, image/gif, image/webp
브라우저는 해당 컨텐트를 이미지로 취급한다.
text/javascript
브라우저는 해당 컨텐트를 Javascript 문서로 취급한다.