HTML 폼 전송 방식에는 크게 application/x-www-form-urlencoded
, multipart/form-data
으로 나누어 질수 있다.
이 방식은 문자를 전송하는 방식이다.
하지만 파일 업로드 같은 경우에는 바이너리 데이터(파일)을 전송해야 된다. 또한, 문자와 바이너리 데이터를 함께 전송해야 되기 때문에 이 방식은 적합하지 않다.
이 문제를 해결하기 위해 HTTP는 multipart/form-data
전송 방식을 제공한다.
참고💡
웹 클라이언트가 요청을 보낼 때, Http 프로토콜의 바디 부분에 데이터를 나누어 보내는 것을Multipart
라고 한다.이렇게 각각의 항목을 구분해서, 한번에 전송하는 것을
Multipart/form-data
라고 한다.
multipart/form-data
방식은 다른 종류의 여러 파일과 폼의 내용 함께 전송할 수 있다.enctype="multipart/form-data"
를 지정해야 한다. 그렇게 되면 아래와 같이 웹 브라우저가 HTTP메시지를 만들어준다.Content-Disposition
가 항목별 헤더에 추가되고 부가 정보가 존재한다.이렇게 Body에 데이터들이 부분(Part)으로 나누어지게 된다.
서블릿
이 제공하는 Part기능과 스프링
이 제공하는 MultipartFile 인터페이스
를 통해 파일(이미지)를 업로드를 구현할 수 있다.
이번엔 AWS S3를 이용하여 이미지 업로드 및 삭제 기능등을 구현할 예정이기 때문에, 이 부분을 넘어가고 연습 예제 코드를 참고하기 바랍니다.
https://github.com/BonSik-Koo/Backend_study/tree/main/basic/file_upload