-
전자정부 표준프레임워크 시리즈 10화 – 파일 업로드와 다운로드 처리 구조 분석: EgovFileMngService의 내부 작동 방식기술과 산업/언어 및 프레임워크 2025. 5. 26. 10:56728x90
전자정부 표준프레임워크의 파일 업로드/다운로드 기능을 담당하는 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화 – 공통 코드 관리 기능 완벽 정리: 코드 테이블, 조회 서비스, 화면 연동까지
728x90'기술과 산업 > 언어 및 프레임워크' 카테고리의 다른 글
Spring Framework 시리즈 6화 – 의존성 순환 오류 해결 전략 (0) 2025.05.27 NestJS 마스터 시리즈 15화. 인증 시스템 구현 (1) – JWT 기반 로그인 시스템 만들기 (1) 2025.05.27 Spring Framework 시리즈 5화 – 스프링 빈 스코프 정리 (0) 2025.05.26 Spring Boot 시리즈 36편 – Elasticsearch 연동: 검색 기능 확장을 위한 인덱싱, 매핑, 쿼리 전략 (0) 2025.05.26 FastAPI 시리즈 11화 - OAuth2 이해와 FastAPI 로그인 인증 시스템 구축 (0) 2025.05.23