Multer는 Node.js에서 파일 업로드를 처리하기 위해 주로 사용되는 미들웨어입니다. Express 또는 다른 Node.js 서버에서 클라이언트가 전송하는 파일을 서버에 저장하거나 처리하는 데 사용됩니다. Multer는 특히 multipart/form-data 형식(파일 업로드 시 주로 사용되는 형식)을 파싱하는 데 유용합니다.

Multipart form-data 형식

Multipart/form-data 형식은 텍스트 필드와 파일을 동시에 전송할 수 있도록 해주는 인코딩 타입입니다. 예를 들어, 사용자가 이름과 프로필 사진을 동시에 제출하는 경우 이 형식을 사용합니다.

이 이름에서 알 수 있듯이, multipart는 데이터가 여러 부분으로 나뉘어 전송됨을 의미합니다. 각 부분은 고유의 헤더와 내용을 가지며, 서로 다른 데이터 유형을 표현할 수 있습니다. 이러한 부분들은 boundary라는 구분자를 사용하여 구분됩니다.

Multipart/form-data 구조

multipart/form-data는 각 데이터를 **경계(boundary)**로 구분하여 나누어진 여러 파트로 구성됩니다.

경계(boundary)

각 파트(부분)는 고유한 boundary로 구분됩니다. 이 boundary는 클라이언트와 서버 간 데이터를 구분하는 기준이 됩니다. HTTP 요청의 Content-Type 헤더는 다음과 같이 boundary 정보를 포함합니다.

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

multipart/form-data 요청은 여러 파트로 나뉩니다. 각 파트는 헤더바디로 구성됩니다.

Content-Type 헤더

multipart/form-data 요청의 Content-Type 헤더는 데이터가 multipart 형식임을 명시하며, 경계(boundary)를 정의합니다.

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

요청 본문 바디

**요청의 본문(body)**은 여러 개의 **파트(part)**로 구성되며, 각 파트는 boundary로 구분되며, 파트 헤더본문 내용으로 구성되어 있습니다.