ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 전자정부 표준프레임워크 시리즈 10화 – 파일 업로드와 다운로드 처리 구조 분석: EgovFileMngService의 내부 작동 방식
    기술과 산업/언어 및 프레임워크 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
Designed by Tistory.