Multipart Form Data 생성기
브라우저 처리이름=값 줄로 multipart/form-data 요청 본문을 만듭니다. 무작위 boundary, 파일 부분(이름=@파일명)의 filename·Content-Type, Content-Length와 같은 내용의 curl -F 명령까지 보여 줍니다.
- 파일·이미지·문서 처리 도구는 브라우저 안에서 처리되더라도 원본에 개인정보나 민감 정보가 포함될 수 있습니다. 공유·제출 전 원본과 결과를 한 번 더 확인하세요.
파일 업로드 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 명령도 함께 나옵니다.
사용 방법
- '필드' 칸에 name=ToolBada처럼 이름=값을 한 줄에 하나씩 적습니다. 파일은 [email protected]처럼 씁니다.
- '실행'을 누르면 Content-Type 헤더, 본문, curl 명령이 차례로 나옵니다.
- 서버 로그의 요청 본문과 비교하거나 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''… 형식을 요구하기도 하니 서버 문서를 확인하세요.