파일 업로드

  • HTML Form으로 파일 업로드를 하려면 두 가지 방식을 이해해야 한다.

    • application/x-www-form-urlencoded

    • multipart/form-data

application/x-www-form-urlencoded

  • HTML Form 데이터를 서버로 전송하는 가장 기본적인 방법

  • Form 태그에 별도의 enctype 옵션이 없다면 웹 브라우저는 요청 HTTP 메시지 헤더에 내용을 추가한다.

    • content-type

      • application/x-www-form-urlencoded

    • Form 데이터

      • username=kim&age=20

      • HTTP Body에 데이터를 &로 구분해 문자로 전송한다.

문제점

  • 파일을 업로드 하려면 문자 대신 바이너리 데이터를 전송해야 한다.

  • 보통은 Form으로 데이터를 보낼 때 파일만 전송하지 않는다.

    • 이름, 나이와 첨부파일을 동시에 전송할 경우 문자와 바이너리를 한 번에 처리해야 한다.

multipart/form-data

  • application/x-www-form-urlencoded 방식의 문제를 해결하기 위한 전송 방식

  • 파일을 다른 종류의 데이터와 함께 전송할 수 있다.

  • 각 항목을 구분해 한 번에 전송한다.

  • enctype="multipart/form-data"

    • multipart/form-data를 사용하기 위해 Form 태그에 지정해야 한다.

  • Content-Disposition 헤더

    • 각 항목마다 부가 정보를 추가한다.

    • 일반 데이터는 각 데이터 별로 문자를 전송한다.

    • 파일은 파일 이름과 content-type을 추가하고 바이너리 데이터를 전송한다.

Part

  • application/x-www-form-urlencoded에 비해 복잡하고 각각의 part로 나눠져 있다.

Last updated