파일 업로드 구현 정리

알파·2022년 10월 8일
0

HTML 폼데이터를 서버로 전송하는 두가지 방식이 있다

  1. application/x-www-form-url-encoded : 기본적인 방법, 문자 전송이기 때문에 바이너리 데이터를 포함한 파일 전송에는 부적합
  2. multipart/form-data : 문자 + 바이너리 데이터 동시에 전송 가능, 다른 종류의 여러 파일과 폼의 내용을 함께 전송할 수 있다.

서블릿을 이용한 파일 업로드

Spring에서 multipartFile을 제공
파일의 경우 Content-Disposition이라는 헤더에 filename 값이 추가되고 Content-Type 헤더도 추가된다.

멀티파트 형식은 전송 데이터를 하나하나 각각 부분(part)으로 나누어 전송한다. 'parts'에는 이렇게 나누어진 데이터가 각각 담긴다.
서블릿이 제공하는 'Part'는 멀티파트 형식을 편리하게 읽을 수 있는 다양한 메서드를 제공한다.

스프링은 'MultipartFile'이라는 인터페이스로 멀티파트 파일을 매우 편리하게 지원한다.
MultipartFile 주요 메서드
1. file.getOriginalFilename(); : 업로드 파일명
2. file.transferTo(...); : 파일 저장

저장된 파일은 데이터베이스에 저장하지 않고 저장공간에 따로 저장하고 경로만 데이터베이스에 저장

결론

이미지를 S3 혹은 서버 저장소에 저장하고 Url로 불러오는 것 자체가 파일을 로드하는 것임!

profile
I am what I repeatedly do

0개의 댓글