기술과 산업/언어 및 프레임워크

전자정부 표준프레임워크 시리즈 10화 – 파일 업로드와 다운로드 처리 구조 분석: EgovFileMngService의 내부 작동 방식

B컷개발자 2025. 5. 26. 10:56
728x90

전자정부 표준프레임워크의 파일 업로드/다운로드 기능을 담당하는 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