IIS 서버를 이용해 개발하다보니 특정 파일 업로드 시에 서버가 파일을 받지 못하는 상황이 발생 했습니다..!! 😱
문제는 바로 MIME 문제였습니다.🔨
Multipurpose Internet Mail Extensions의 약자로 클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘입니다. - MDN
텍스트 파일 통신 시 ASCII 로 공통된 표준만 따르면 되지만 바이너리 파일을 보내는 경우 음악, 무비, 워드 등 ASCII만으로는 전송이 불가능 하여 바이너리 파일을 텍스트 파일로 변환하는 기술 필요합니다!!
→ 바로 MIME (MIME가 문서 타입 정보 나르는 유일한 방법 X, 웹(http)에서 MIME 타입만이 적절)
MIME 타입의 구조는 매우 간단합니다.
type/subtype
/
로 구분된 두개의 문자열
타입 type
: 카테고리를 나타내며 개별, 멀티파트 타입
서브 타입 subtype
: 각각의 타입에 한정
→ 쉽게 생각해서 타입은 파일의 종류, 서브 타입은 파일 포맷으로 표현합니다.
대소문자 구분하지는 않지만 전통적으로 소문자로 쓰여집니다.
스페이스는 허용되지 않습니다.
개별 타입
멀티파트 타입
다른 MIME 타입들을 지닌 개별적인 파트들로 나누어지는 문서의 카테고리 가리킵니다.
→ 즉, 합성된 문서를 타나내는 방법이 됩니다.
text
: 텍스트를 포함하는 모든 문서, 이론상으로는 인간이 읽을 수 있어야 합니다.
text/plain(특정 서브타입이 없는 텍스트 문서들)
text/html, text/css, text/javascript
image
: 모든 종류의 이미지, 애니메이션되는 이미지도 포함 합니다.
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
: 모든 종류의 이진 데이터 나타냅니다.
application/octet-stream(특정, 알려진 서브타입이 없는 이진 문서)
application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf
멀티파트란 MIME Type들이 개별적인 파트로 나누어지는 문서에서 MIME Type들이 각 Type에 맞게 파트별로 나누어지는 것을 말합니다.
multipart/form-data
multipart/byteranges