요소기술 - 파일업로드
개요
첨부파일에 대한 업로드 기능을 제공한다.
설명
MultipartHttpServletRequest 및 MultipartFile을 통해 첨부된 파일 정보를 취득하고 서버에 저장 기능을 처리한다.
관련소스
| 유형 | 대상소스 | 설명 | 비고 |
|---|---|---|---|
| Service | egovframework.com.cmm.service.EgovFileMngUtil.java | 첨부파일 처리 공통 유틸리티 | |
| Controller | egovframework.com.utl.fcc.web.EgovFileUploadController.java | 테스트용 controller | |
| JSP | /WEB-INF/jsp/egovframework/cmm/utl/EgovFileUpload.jsp | 테스트 페이지 |
메소드
| 결과값 | 메소드 | 설명 | 내용 |
|---|---|---|---|
| HashMap | uploadFile(MultipartFile file) | 파일 업로드 | 첨부로 등록된 파일을 서버 업로드하는 기능 |
| List | parseFileInf(Map<String, MultipartFile> files, String Key, int fileKey, String atchFileId, String storePath) | 첨부파일 정보취득 | 첨부로 등록된 파일에 대한 정보를 얻는 기능 |
Input
- file: MultipartHttpServletRequest 객체로 부터 얻어진 MutipartFile 객체로 null아 아닌 유효 객체
- Validation 체크: 요소기술 Validation 체크
Output
- HashMap : 업로드된 파일 정보 (사용방법 참조)
- List : FileVO 객체 리스트
환경설정
파일 저장 위치를 지정하기 위해서 EgovPropertyService 서비스를 사용한다.
(EgovPropertyService는 User home 디렉토리밑에 egovProps/globals.properties 파일을 참조하고 현재의 파일 업로드 기능은 해당 속성파일의 “Globals.fileStorePath” 속성을 사용한다.)
- User home 디렉토리 : System.getProperty(“user.home”)를 통해 얻는 정보로 Windows 계열의 OS는 보통 “C:\Documents and Settings\사용자계정“이고, Unix계정의 경우는 ”/home/사용자계정“이 된다.
사용방법
우선 globals.properties 파일에 다음과 같은 속성이 정의되었다고 가정한다.
... Globals.fileStorePath = C:/Documents and Settings/Administrator/egovProps/ ...
import egovframework.com.cmm.service.EgovFileMngUtil; ... MultipartHttpServletRequest mptRequest = (MultipartHttpServletRequest)request; Iterator fileIter = mptRequest.getFileNames(); while (fileIter.hasNext()) { MultipartFile mFile = mptRequest.getFile((String)file_iter.next()); if (mFile.getSize() > 0) { HashMap map = EgovFileMngUtil.uploadFile(mFile); System.out.println("[ "+Globals.FILE_PATH+" : "+_map.get(Globals.FILE_PATH)+" ]"); System.out.println("[ "+Globals.FILE_SIZE+" : "+_map.get(Globals.FILE_SIZE)+" ]"); System.out.println("[ "+Globals.ORIGIN_FILE_NM+" : "+_map.get(Globals.ORIGIN_FILE_NM)+" ]"); System.out.println("[ "+Globals.UPLOAD_FILE_NM+" : "+_map.get(Globals.UPLOAD_FILE_NM)+" ]"); System.out.println("[ "+Globals.FILE_EXT+" : "+_map.get(Globals.FILE_EXT)+" ]"); } }
참고자료
- 파일다운로드 참조: 파일다운로드