2018년 4월 17일 화요일

Spring Fileupload 관련 내용

파일업로드

  • try -with -resource 구문은 close 함수를 자동으로 호출해준다.
  • 고려사항
    • 중복된 파일을 올리면 안된다.
    • 하나의 폴더에 너무 많은 파일이 저장되면 관리하기 어렵다. 년/월/일 폴더를 만들고 uuid 파일이름으로 생성한다.
    • 윈도우는 디렉토리 구분자가 '\' 이고 unix계열은 디렉토리 구분자가 '/' 이다. File.separtor을 통해 이용하여 디렉토리를 구분해야한다.
    • 파일은 한번에 업로드처리 하는것이 아니다. Stream을 통해 올려야 한다. file.getbyets() 파일을 한번에 읽어서 처리하므로 사용하지 않는다.
  • 초창기에는 http, mail도 txt로 주고받았다.
  • 외부에서는 직접 접근하면 안된다. ex) jsp를 업로드
  • Multipart 를 이용한다.
  • 서블릿
    • HttpServletRequest는 파일업로드를 지원하지 않는다.
    • 사용자가 파싱을 해야한다.
    • 별로의 라이브러리를 사용해야한다.
  • HTML Multipart
    • <form action="/upload" method="post" enctype="multipart/form-data"> 설정을 추가해야한다.
  • 라이브러리
    • commons-io , commons-fileupload 라이브러리를 통해 업로드 할수 있다.(다른 라이브러리도 가능)
  • Spring
    • multipartresolver Bean을 등록 해야한다.
    • @Bean
      public MultipartResolver multipartResolver() {
          CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
          multipartResolver.setMaxUploadSize(10485760); // 1024 * 1024 * 10
          return multipartResolver;
      }

  • @requestparam, multipartfile 을 통해 파일정보를 얻을수 있다.
  • ex ) @requestparam("file) multipartfile file
  • Download읽어들인 파일정보를 브라우저에게 출력한다.
    • 파일정보를 reponse를 이용하여 직접 출력하겠다.
    • header에 Content-Disposition, Content-Transfer-Encoding 속성이 있으면 파일이 다운로드된다. 2개의 속성이 없으면 브라우저에서 파일 및 이미지를 보여준다.
    • @ResponseBody를 붙여주고 HttpServletResponse response를 파라미터로 주입받는다.
Share:

0 개의 댓글:

댓글 쓰기