전자정부 표준프레임워크 시리즈 10화 – 파일 업로드와 다운로드 처리 구조 분석: EgovFileMngService의 내부 작동 방식
전자정부 표준프레임워크의 파일 업로드/다운로드 기능을 담당하는 EgovFileMngService의 구조와 작동 방식, 실무 적용 전략, 보안 대응 방안까지 정리합니다. 공공 프로젝트의 필수 기능을 이해하고 확장하는 데 필요한 실전 가이드입니다.
1. 공공 시스템에서 ‘첨부파일 기능’은 기본이자 필수
전자정부 기반 시스템은 대부분 아래와 같은 기능을 포함합니다.
- 민원 신청서 첨부파일 등록
- 증빙자료 다운로드
- 행정서류, 이미지, 음성파일 업로드
파일 업로드 기능은 단순해 보이지만,
보안, 용량, 파일명 관리, 저장 경로, 이력 관리까지 포함한 민감 기능입니다.
전자정부 표준프레임워크는 이 기능을 EgovFileMngService를 중심으로 표준화해 제공합니다.
2. 전체 흐름 구조
전자정부 파일 처리 구조는 다음과 같은 단계로 작동합니다.
[1] 사용자 파일 업로드
↓
[2] MultipartResolver에 의해 요청 처리
↓
[3] Controller → EgovFileMngUtil → 실제 파일 저장
↓
[4] EgovFileMngService → 파일 메타데이터 DB 저장
↓
[5] DB에는 파일정보 (파일명, 경로, 크기 등) 저장
반대로 다운로드 시에는
[1] 사용자 다운로드 요청
↓
[2] Controller → EgovFileMngService로 파일정보 조회
↓
[3] 실제 저장 경로에서 파일 읽어 응답
3. 핵심 클래스 구조
클래스명 역할
EgovFileMngUtil | 실제 파일 저장/삭제 수행 (파일시스템 연동) |
EgovFileMngService | DB 등록/조회 처리 (파일 메타정보 저장) |
FileVO | 파일명, 경로, 확장자, 사이즈 등 메타데이터 보관용 VO |
FileManageDAO | 파일정보를 DB에 Insert/Select 하는 DAO |
✅ 즉, 파일은 물리적으로 저장소에, 메타데이터는 DB에 분리 저장됩니다.
4. 파일 저장 경로 구조
전자정부 프레임워크는 보통 다음 경로에 파일을 저장합니다.
/egovframework/upload/
├── 2024/
│ ├── 05/
│ │ └── 21/
│ │ └── abcd1234.tmp
- 업로드 파일명은 UUID + 확장자 방식으로 재명명됨
- 저장 디렉토리는 날짜별로 자동 생성되어 충돌 방지
- 원본파일명은 DB에 따로 보관됨 (FileVO의 orignlFileNm 필드)
✅ filePathProperty 또는 .properties 설정에서 업로드 경로를 지정할 수 있습니다.
5. 파일 업로드 코드 예시
Controller
List<FileVO> result = fileUtil.parseFileInf(multipartRequest.getFiles("atchFile"), "FILE_", 0, "", "uploadPath");
String atchFileId = fileMngService.insertFileInfs(result);
Service
- parseFileInf() → 파일 분해 및 메타데이터 구성
- insertFileInfs() → DB 저장
6. 파일 다운로드 처리 방식
다운로드는 일반적으로 다음과 같은 방식으로 구성합니다.
FileVO fileVO = fileMngService.selectFileInf(fileSn);
File file = new File(fileVO.getFileStreCours(), fileVO.getStreFileNm());
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileVO.getOrignlFileNm() + "\"");
✅ 보안상 파일명은 원본명을 그대로 사용하지 않고, 저장명과 분리해 관리합니다.
7. 실무 확장 전략과 보안 대응
A. 파일 확장자 필터링
- .exe, .bat, .jsp, .php 등 위험 확장자는 반드시 필터링 필요
- 업로드 전 Mime Type 확인 권장
B. 다운로드 접근 제어
- 로그인 사용자만 다운로드 가능하도록 세션 체크
- URI 직접 호출 시 파일 열람 차단 필수
C. 대용량 파일 처리
- 파일당 업로드 제한 설정 (multipart.maxFileSize)
- 썸네일 이미지 자동 생성 (이미지 파일일 경우)
D. 클라우드 저장소 연동 (고급)
- AWS S3, NCP Object Storage와 연동 시
→ EgovFileMngUtil을 재정의하여 InputStream → S3 업로드로 확장 가능
8. 감리 대응 시 체크포인트
- 저장경로 노출 여부 (외부 URI 접근 금지)
- 삭제 요청 시 파일 삭제 및 DB 동기화 여부
- 업로드 파일 로그 및 이력 보관
- 불법 파일 필터링 여부 명시
전자정부 프레임워크 구조는 이러한 요구사항을 충족하기 위한 최소 요건을 기본 제공하며,
운영 목적에 맞게 확장·보완하는 것이 실무자의 몫입니다.
결론 – 파일 처리 구조는 단순 구현이 아니라 시스템의 신뢰도 문제다
전자정부 프레임워크의 파일 처리 구조는
단순한 기술 제공을 넘어 공공 데이터의 안정성과 보안, 이력 관리 체계까지 아우르는 설계 구조입니다.
이 구조를 그대로 사용하는 것도 좋지만,
실무에서는 반드시 다음을 고려해 커스터마이징해야 합니다:
- 사용자 접근 방식
- 업로드 파일의 특성
- 보안 이슈
- 저장소의 종류 및 운영 정책
다음 화 예고
전자정부 표준프레임워크 시리즈 11화 – 공통 코드 관리 기능 완벽 정리: 코드 테이블, 조회 서비스, 화면 연동까지