JSP - 29. 파일업로드, 필터

갓김치·2020년 12월 29일
0

JSP+Spring

목록 보기
30/43

파일업로드

  • 일반form과 파일form의 차이점?

일반form 파일form

enctype="application/x-www-form-urlencoded"

  • Content-Type: application/x-www-form-urlencoded

enctype="multipart/form-data"

  • Content-Type: multipart/form-data; boundary=----WebKitFormBoundarykxajvNY1e43i6ccC!
    - 바디를 여러개로 쪼개야한다 -> multipart
  • 몇개로 쪼개?= form의 input 갯수 -> form-data
    • 문자는 없고 파트만 존재

multi-part config

<multipart-config>
  <location></location><!-- 생략시 jdk가 가지고 있는 임시경로를 사용 -->
  <max-file-size></max-file-size><!-- 파일하나당 허용할 수 있는 파일의 크기 제한 -->
  <max-request-size></max-request-size><!-- 요청하나당 허용할 수 있는 파일의 총합 크기 제한 -->
  <file-size-threshold></file-size-threshold><!-- 임계치 : 청크 쪼갤 필요없는 tiny한 파일을 파일시스템(임시저장소)에 저장하지말고 인메모리에 저장해라는 기준점 생략시 10kb-->
<multipart-config>
  • chunck: 하나의 데이터를 네트워크에 맞게 쪼개는 단위

첫번째 코드가 망한 코드인 이유

  • 사용자가 나쁜맘 먹고 백도어프로그램(.exe, .jsp)을 업로드한다면?
    • 클사: 필요한 데이터만 받도록 확장자 특정..
      • <input type="file" name="uploadFile" accept="image/*"/>
    • 서버: contentType 확인
    • 원본파일명으로저장하지마 -> 해커가 뭘로업로드했는지 지도모름,,
      • 밀리세컨가진 이름
      • UUID
    • 확장자 없애고저장 -> 실행이 바로안됨



필터

  • A filter is an object that performs filtering tasks on either therequest to a resource (a servlet or static content), or on the responsefrom a resource, or both.
  • Decorate Filter Pattern
    • 기존 코드 변경하지 않고 filter 적용 완료!

Filter Chain

  1. 필터 구현
  2. was에 필터 등록
  3. was가 등록된 필터를 필터 체인으로 관리
  • 필터체인은 filter의 doPost의l reference로 들어와있음

목적

  1. 요청 전처리로 요청 성격 변경
  2. 보안 목적의 접근제어
  3. 응답 후처리 완성
  • 응답 데이터가 1GB -> 필터에서 압축하여 내보냄

기능

  1. Authentication Filters
  2. Logging and Auditing Filters
  3. Image conversion Filters
  4. Data compression Filters
  5. Encryption Filters
  6. Tokenizing Filters
  7. Filters that trigger resource access events
  8. XSL/T filters
  9. Mime-type chain Filter

필터 체인이 없다면..?

front controller, backend controller 내의 코드가 변경되어야 함

command object

  • 명령때 받는 vo..

순서

  • DB구조 바뀜 -> DOMAIN LAYER -> 쿼리문 바뀜 -> view단(memberForm.jsp) 바뀜 (클라이언트용 mem_image, form을 post 와 enctype!

이진데이터를 이미지로 -> data scheme

  • base64로 인코딩시주의점
    • base64로 인코딩하면 1.3배 커짐
    • 이미지 사이즈에 맞지 않으면 크롭기능을 넣어준다던지..해줘야됨..

미션

  • 브레이크포인트 찍어가며 흐름파악
  • 멤버 수정
  • 거래처에 거래처 이미지 기능부여
  • 이미지 사이즈 체크하여 썸네일?
profile
갈 길이 멀다

0개의 댓글