* FileUpload - 파일 업로드 요청 페이지

1. 호출 JSP(또는 HTML)
   - 요청 방식 : post
   - <form enctype="multipart/form-data">
   - input tag : <input type="file" name="upfile"/>
      - name 송석의 값은 upload정보를 저장할 DTO(VO)의 Attribute와 매칭 된다.
      - 여러 개의 파일을 업로드 할 때 name속성의 값은 이름[0], 이름[1] 형식으로 작성

         <input type="file" name="upfile[0]"/>
         <input type="file" name="upfile[1]"/>

* FileUpload - Spring 설정파일

1. multipartResolver 빈으로 등록
   - upload를 처리해 주는 bean
   - id/name은 반드시 multipartResolver로 등록
      <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
   - property
      - defaultEncoding - 기본 인코딩 설정
      - maxUploadSize - 업로드 허용 최대 size를 byte단위로 지정.
         -1은 무제한
      - uploadTempDir - 업로드 파일이 저장될 임시 경로 지정
      - maxInMemorySize - 업로드 파일을 저장할 최대 메모리 크기

* FileUpload - Controller에서 처리

1. DTO를 통해 받기
   - 파일 요청 파라미터의 이름과 매칭되는 property작성
   - 파일의 정보를 저장할 property는 MultipartFile 타입으로 작성

2. @RequestParam 을 통해 받기
   - Controller 메소드의 MultipartFile 타입의 매개변수 사용

3. MultipartHttpServletRequest 이용
   - Controller 메소드의 매개변수로 
     MultipartHttpServletRequest를 선언
   - 주요 메소드
      - getFileNames() : Iterator<String> - 업로드된 파일명들 조회
      - getFile(String name) : MultipartFile - 업로드된 파일정보 조회
      - getFiles(String name) : List<MultipartFile> - 업로드된 파일정보들 조회

* FileUpload - MultipartFile

1. org.springframework.web.multipart.MultipartFile
   - 업로드된 파일정보를 저장하는 객체
   - getName() : String -요청파라미터의 name
   - getOriginalFilename() :String - upload된 파일명
   - getSize() : long - 파일의 크기
   - transferTo(File dest) - upload된 파일을 특정 경로로 이동
   - isEmpty() : boolean - upload된 파일이 없으면 true
   - getInputStream() : InputStream - 업로드 된 파일과 연결된 InputStream 리턴

* 원래 파일 업로드를 실행하려면 복잡한대 이걸 처리해주는 api가 있고 이걸 등록해서 사용하면 된다.

Posted by 조은성
,