◆ 가상화

  • 다운로드 때문에 (DB)데이터베이스의 정보만 저장하고 하드디스크에 물리적인 파일 용량을 저장해준다.
  • DB는 저장한 파일의 정보(파일의 크기, 이름, 유형 등등)만 저장하고 파일은 절대 들어가지 않는다.
  • 데이터베이스의 모든걸(정보와 물리적인 파일용량) 저장하기에는 비싸기 때문이다.
  • 서버가 여러 개 인데 한 개 인것처럼 사용하는 것도 가상화이다.

◆ 파일 전송

파일 업로드 : 클라이언트(사용자)가 파일을 서버로 전송하는 것
파일 다운로드 : 서버가 파일을 클라이언트(사용자)에게 전송하는 것

  • input[type=file]로 작성 한다.
  • GET방식은 용량 제한 때문에 파일 전송이 불가능하며 이름(정보)만 전송된다.
  • POST 방식은 용량 제한은 없지만 전송이 불가능하며 이름(정보)만 전송된다.
  • POST 방식은 Encoding Type에 따라 두 가지로 나눠진다.
    - application/x-www-form-urlencoded은 기본 방식이며 key=value 형태로 전송된다.
    - &으로 데이터를 구분하여 전송된다.
    - key와 value가 1:1 연결되므로 파일과 같이 정보가 많을 때는 전송이 어렵다.
    - 파일을 전송하고 싶다면 반드시 enctype="multipart/form-data"로 변경해야 한다.
    - multipart/form-data은 boundary데이터를 구분하여 전송한다.

(참고) 크롬에서는 데이터가 잘려서 보이고 파이어폭스는 데이터가 다 나오므로 파이어폭스 사용을 권장한다.

◆ 파일 업로드 환경 설정

application.properties 에서 코드 아래 코드를 추가한다.

  • 파일 업로드를 가능하게 하고 싶을 때
    - spring.servlet.multipart.enabled=true
  • 파일 한 개 용량 제한 크기
    - spring.servlet.multipart.max-file-size=1MB
  • 업로드 하려는 전체 파일 총 용량 제한 크기
    - spring.servlet.multipart.max-request-size=10MB

◆ 파일 업로드

  1. 파일 업로드
  • 파일 업로드는 PostMapping만 가능
  • 전송된 파일은 MultipartFile 이라는 형태로 수신이 가능하다.
  • 파일 전송 완료 후에는 반드시 redirect를 해야한다.
    - 안하면 새로고침시 재업로드 해야한다.
  • (주의)파일을 전송하지 않아도 attach는 null이 아니므로 추가 검사가 필요하다.
  1. 파일을 한 개 첨부 하는 방법
  • input<input type="file">로 작성 한다.
  • GET방식은 용량 제한 때문에 파일 전송이 불가능하며 이름(정보)만 전송된다.
  • POST 방식은 용량 제한은 없지만 전송이 불가능하며 이름(정보)만 전송된다.

POST 방식은 Encoding Type에 따라 두 가지로 나눠진다.

  • application/x-www-form-urlencoded은 기본 방식이며 key=value 형태로 전송된다.
  • &으로 데이터를 구분하여 전송된다.
  • key와 value가 1:1 연결되므로 파일과 같이 정보가 많을 때는 전송이 어렵다.
  • 파일을 전송하고 싶다면 반드시 input 태그에 enctype="multipart/form-data" 코드를 추가해야 한다.
  • multipart/form-data은 boundary로 데이터를 구분하여 전송한다.
  1. 파일을 여러 개 첨부하는 방법
    1) input 태그를 여러 개 만든다.
    - 개수를 제한하고 싶을 때 사용
    2) input 태그에 multiple 옵션을 추가한다.
    - 개수 무제한 (제한하려면 프로그래밍)

◆ 파일 정보 등록

  • 시퀀스를 insert에서 만들것인지 아니면 미리 생성할 것인지 판단한다.
  • 번호를 insert를 제외한 코드에서 사용하려면 분할, 아니면 통합한다.
profile
Backend Developer

0개의 댓글