multipart/form-data
Multipart

개요

multipart/form-data는 파일 업로드를 포함한 HTML 폼 전송의 표준 미디어 타입입니다(RFC 7578). 하나의 요청 본문을 경계 문자열로 여러 파트로 나눠, 각 파트에 필드 이름·파일명·개별 Content-Type을 담습니다.

자세히

본문은 Content-Type 헤더에 선언된 `boundary` 구분자로 파트를 나눕니다. 각 파트는 `Content-Disposition: form-data; name="field"`(파일이면 `filename="..."` 추가)로 자신을 설명하고, 파일 파트는 자체 `Content-Type`(예: image/png)을 가집니다. 이 구조 덕분에 텍스트 필드와 바이너리 파일을 한 요청에 섞어 보낼 수 있습니다.

왜 파일에는 x-www-form-urlencoded 대신 이걸 쓰는가: urlencoded는 바이너리를 퍼센트 인코딩해 크기가 폭증하고 파일명·MIME 같은 메타데이터를 담을 수 없습니다. multipart는 바이너리를 거의 원본 그대로 전송하고 파트별 메타데이터를 붙일 수 있어 파일 업로드에 필수입니다. 반대로 파일 없는 순수 텍스트 폼은 오버헤드가 큰 multipart보다 urlencoded가 효율적입니다. boundary 문자열은 본문 어디에도 등장하지 않는 고유값이어야 합니다.

문법

e.g. Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

실무 참고

관련 타입

관련 헤더