본문 바로가기

Multipart Form Data 생성기

브라우저 처리

이름=값 줄로 multipart/form-data 요청 본문을 만듭니다. 무작위 boundary, 파일 부분(이름=@파일명)의 filename·Content-Type, Content-Length와 같은 내용의 curl -F 명령까지 보여 줍니다.

사용 전 확인
  • 파일·이미지·문서 처리 도구는 브라우저 안에서 처리되더라도 원본에 개인정보나 민감 정보가 포함될 수 있습니다. 공유·제출 전 원본과 결과를 한 번 더 확인하세요.
도구 실행입력 후 결과 확인
Multipart Form Data 생성기 샘플 실행

파일 업로드 API를 직접 만들거나 디버깅할 때는 multipart/form-data 본문이 실제로 어떻게 생겼는지 알아야 합니다. 이 도구는 이름=값 목록을 받아 boundary로 구분된 본문 전체를 만들어 보여 줍니다.

브라우저 처리
샘플 결과
Content-Type: multipart/form-data; boundary=----ToolBadaFormBoundary(무작위 16자)
Content-Length: 301 (파일 내용 제외)

------ToolBadaFormBoundary…
Content-Disposition: form-data; name="name"

ToolBada
------ToolBadaFormBoundary…
Content-Disposition: form-data; name="photo"; filename="cat.png"
Content-Type: image/png

(파일 내용)
------ToolBadaFormBoundary…--

curl -F 'name=ToolBada' -F '[email protected];type=image/png' https://example.com/upload
자바스크립트가 활성화되면 이 영역이 실제 입력, 실행, 결과 패널로 바뀝니다.

Multipart Form Data 생성기 사용 가이드

파일 업로드 API를 직접 만들거나 디버깅할 때는 multipart/form-data 본문이 실제로 어떻게 생겼는지 알아야 합니다. 이 도구는 이름=값 목록을 받아 boundary로 구분된 본문 전체를 만들어 보여 줍니다.

각 필드는 Content-Disposition: form-data; name="…" 머리글과 값으로 이루어지고, 이름[email protected]처럼 @를 붙이면 filename과 확장자에 맞는 Content-Type(image/png 등)을 가진 파일 부분이 됩니다. ;type=application/pdf처럼 형식을 직접 지정할 수도 있습니다.

이름이나 파일명의 큰따옴표와 줄바꿈은 HTML 규칙대로 %22, %0D%0A로 바꿔 머리글이 깨지지 않게 합니다. 본문 바이트 수(파일 내용 제외)와 같은 요청을 보내는 curl -F 명령도 함께 나옵니다.

사용 방법

  1. '필드' 칸에 name=ToolBada처럼 이름=값을 한 줄에 하나씩 적습니다. 파일은 [email protected]처럼 씁니다.
  2. '실행'을 누르면 Content-Type 헤더, 본문, curl 명령이 차례로 나옵니다.
  3. 서버 로그의 요청 본문과 비교하거나 curl 명령으로 실제 요청을 보내 봅니다.

예시: 텍스트 필드와 파일 하나

입력
name=ToolBada
[email protected]
결과
Content-Type: multipart/form-data; boundary=----ToolBadaFormBoundary(무작위 16자)
Content-Length: 301 (파일 내용 제외)

------ToolBadaFormBoundary…
Content-Disposition: form-data; name="name"

ToolBada
------ToolBadaFormBoundary…
Content-Disposition: form-data; name="photo"; filename="cat.png"
Content-Type: image/png

(파일 내용)
------ToolBadaFormBoundary…--

curl -F 'name=ToolBada' -F '[email protected];type=image/png' https://example.com/upload

boundary 문자는 실행할 때마다 새로 만들어지지만 길이가 같아 Content-Length는 변하지 않습니다.

이럴 때 쓰면 좋아요

  • 파일 업로드 API의 서버 쪽 파서를 테스트할 본문 예시가 필요할 때
  • 업로드가 실패할 때 클라이언트가 보낸 본문 형식과 비교할 때
  • API 문서에 multipart 요청 예시를 실을 때
  • boundary와 Content-Disposition 구조를 학습할 때

문제가 생겼을 때

'필드는 이름=값 형식으로 적으세요' 오류

= 기호가 없는 줄이 있습니다. 값이 비어 있어도 description= 처럼 =는 남겨 두세요.

직접 만든 요청에서 서버가 본문을 못 읽음

Content-Type 헤더의 boundary와 본문의 구분선이 같아야 하고, 구분선은 앞에 --가 두 개 더 붙습니다. 이 도구의 헤더와 본문을 함께 쓰세요.

활용 팁

  • 실제 전송에서는 줄바꿈이 CRLF(\r\n)입니다. 화면에는 읽기 쉽게 줄바꿈으로 보여 주지만 Content-Length는 CRLF 기준으로 계산했습니다.
  • 브라우저나 fetch의 FormData를 쓰면 boundary를 자동으로 만들어 주므로, 코드에서는 Content-Type 헤더를 직접 넣지 마세요.

자주 묻는 질문

파일 내용을 실제로 넣을 수 있나요?

이 도구는 구조를 보여 주는 용도라 파일 자리에 (파일 내용)이라고 표시합니다. 실제 업로드는 함께 나온 curl 명령을 쓰세요.

같은 이름의 필드를 여러 번 넣어도 되나요?

됩니다. tags=a와 tags=b처럼 여러 줄로 적으면 같은 이름의 부분이 순서대로 들어가며, 서버는 보통 배열로 받습니다.

한글 값이나 한글 파일명도 되나요?

값은 UTF-8로 그대로 들어갑니다. 한글 파일명은 서버에 따라 filename*=UTF-8''… 형식을 요구하기도 하니 서버 문서를 확인하세요.