기술 정리 & CS/Web 일반

[WEB 일반] MIME Type, Content-Type 이란

yubi5050 2024. 6. 23. 17:50

MIME Type 이란

MIME Type(Multipurpose Internet Mail Extensions)는 인터넷에서 전송되는 데이터의 형식을 나타내는 표준 방식

 

MIME 타입은 클라이언트(브라우저)가 데이터를 처리하는 방식을 결정하는 데 중요한 역할

웹에서는 HTTP 통신시 Content-Type 이란 Key값으로 Header에 담겨 사용됩니다.

 

MIME Type 구성

MIME 타입은 타입(Type)과 / 서브 타입(Subtype) 으로 구성 (ex. type/subtype => text/plain)

  1. 타입(type): 데이터의 일반적인 범주, ex) 텍스트, 이미지, 오디오, 비디오 
  2. 서브타입(subtype): 특정 타입(type) 내에서 데이터의 구체적인 형식을 나타냄. ex) 텍스트 - plain, html / 이미지 - jpeg, png

※ 추가적인 세부 정보를 나타내고 싶다면, type/subtype;parameter=value 의 파라미터도 가능

 

MIME Type - 타입

타입은 기본적으로 다음 두 가지 클래스로 구분된다. 

 

 multipart 란?

여러 discrete(독립)조각으로 구성되어, 각 부분은 고유한 개별 MIME 타입을 가질 수 있는 형식

multipart는 하나의 트랜잭션으로 함께 전송되는 여러 파일을 캡슐화 가능. ex) 이메일 여러 파일 첨부시 

 

예시

  • text : 사람이 읽을 수 있는 콘텐츠 / 쉼표 등으로 구분된 형태 데이터 / 텍스트 형식의 모든 데이터
  • application : 모든 종류의 이진 데이터 
  • image : 이미지 / 그래픽 데이터 에니메이션 / 정지 이미지 형식의 애니메이션 
  • audio : 오디오, 음악 데이터
  • video : 비디오 데이터
  • font : 글꼴 / 서체 데이터
  • model : 3D 객체 또는 화면에 대한 모델 데이터
  • multipart : 여러 형식을 포괄한 형식에 대한 형식

 

MIME Type - 서브타입 1 (application, text, image, font)

application 대표 타입들 (전체 목록 링크)

  • application/pdf : 단일 pdf 파일
  • application/zip : 단일 압축 파일 관련 
  • application/json : 단일 json 형식, 파일을 Base64 인코딩하여 JSON으로 전송: application/json 도 가능
  • application/xml : 단일 xml 형식
  • application/octet-stream : 이진 파일을 위한 기본값 ('잘 알려지지 않은' 이진 파일을 의미하기도 하며, 브라우저가 실행해야 하는지 묻기도 함 (특정 하위 타입이 없는 파일의 경우에 다음을 사용하기도 함), 단일 파일 전송: 파일만 단독으로 전송할 때 사용, 순수한 바이트 스트림으로 파일 내용을 전송
  •  application/x-www-form-urlencoded : 텍스트 데이터만 인코딩하여 전송.
  • 등등..

 

text 대표 타입들 (전체 목록 링크)

  • text/plain: 일반 텍스트 파일 (특정 하위 타입이 없는 파일의 경우에 다음을 사용하기도 함)
  • text/html: HTML 파일
  • text/css: CSS 파일
  • text/javascript: JavaScript 파일
  • text/markdown: Markdown 파일

 

 

image 대표 타입들 (전체 목록 링크)

 

  • image/jpeg: JPEG 이미지 파일
  • image/png: PNG 이미지 파일
  • image/gif: GIF 이미지 파일
  • image/bmp: BMP 이미지 파일
  • image/svg+xml: SVG 이미지 파일

 

 

font 대표 타입들 (전체 목록 링크)

  • font/ttf: TrueType Font
  • font/otf: OpenType Font
  • font/woff: Web Open Font Format
  • font/woff2: Web Open Font Format 2

 

MIME Type - 서브타입 2 (audio, video, model)

audio 대표 타입들 (전체 목록 링크)

  • audio/mpeg: MP3 오디오 파일
  • audio/wav: WAV 오디오 파일
  • audio/ogg: OGG 오디오 파일
  • audio/aac: AAC 오디오 파일
  • audio/flac: FLAC 오디오 파일
  • 등등..

 

video 대표 타입들 (전체 목록 링크)

  • video/mp4: MP4 비디오 파일
  • video/webm: WebM 비디오 파일
  • video/ogg: Ogg 비디오 파일
  • video/x-msvideo: AVI 비디오 파일
  • video/quicktime: QuickTime 비디오 파일

 

model 대표 타입들 (전체 목록 링크)

  • model/vrml: Virtual Reality Modeling Language (VRML)
  • model/x3d+xml: Extensible 3D (X3D)
  • model/stl: Stereolithography (STL)
  • model/iges: Initial Graphics Exchange Specification (IGES)
  • model/obj: Wavefront Object (OBJ)

 

MIME Type - 서브타입 3 (multipart)

multipart 대표 타입들 (전체 목록 링크)

  • multipart/form-data: 웹 form 형식의 데이터 전송에 사용, 파일 데이터는 바이트 스트림으로 전송되고, 각 파트는 MIME 타입과 파일 이름 등의 메타데이터를 포함. ex) 파일과 일반 텍스트 필드를 함께 전송할 때 사용 가능
  • multipart/alternative: 여러 가지 표현 형식의 데이터 전송, 예: 동일한 이메일 내용의 텍스트와 HTML 버전
  • multipart/mixed: 서로 다른 종류의 파일들을 함께 전송할 때 사용
  • multipart/related: HTML 파일과 함께 이미지 등 관련 파일들을 함께 전송할 때 사용
  • multipart/byteranges: HTTP 응답에서 범위 지정된 바이트 데이터를 여러 부분으로 나누어 전송할 때 사용

이들 multipart 타입은 각각의 부분이 독립적인 MIME 타입을 가지며, 복합적인 데이터를 하나의 전송 단위로 묶을 때 유용하게 사용

 

 

 파일 전송시 Content-Type ?

  • 파일과 일반 필드를 함께 전송: multipart/form-data 
  • 단일 파일 전송: application/octet-stream
  • 파일을 Base64 인코딩하여 JSON으로 전송: application/json (서버에서 Base64 디코딩 필요) 
    • 파일을 Base64로 인코딩하여 JSON 객체의 일부로 전송. 이 방식은 일반 필드와 파일을 함께 전송하는 대신 파일을 인코딩하여 문자열로 변환

 

 

참고 링크