문서 관리 시스템 구축: NestJS로 파일 업로드 API 개발
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

문서 관리 시스템 구축: Day 11

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

  • 웹 개발자, 특히 법률 플랫폼 또는 문서 관리 시스템 개발에 관심 있는 중급 이상 개발자
  • RBAC (역할 기반 접근 제어), 파일 업로드 API, 데이터베이스 연동 기술을 학습하고자 하는 개발자
  • Next.jsNestJS 프레임워크 사용 경험을 확보하고자 하는 개발자

핵심 요약

  • NestJSFileInterceptorMulter 미들웨어를 통해 파일 업로드 API 구현
  • Prisma ORM을 사용해 PostgreSQLDocument 테이블에 파일 메타데이터 저장
  • RBAC (역할 기반 접근 제어)를 통해 관리자만 삭제 권한 부여
  • Frontend에서는 FormDatafetch를 사용해 사용자 친화적인 업로드 인터페이스 구현

섹션별 세부 요약

1. 목표

  • 사용자가 특정 사건(case)에 문서를 업로드 가능
  • 파일 메타데이터(이름, caseId, 업로드 시간)를 PostgreSQL에 저장
  • 관리자만 문서 삭제 가능하도록 권한 제어
  • 비인가 사용자의 문서 접근 방지

2. 백엔드 – 파일 업로드 API

  • NestJS@Post('upload/:caseId') 엔드포인트 생성
  • Multer 미들웨어를 통해 multipart/form-data 처리
  • 업로드된 파일을 로컬 경로 /uploads에 저장
  • Prisma ORM을 통해 Document 테이블에 파일 정보 삽입

3. 프론트엔드 – 업로드 인터페이스

  • 을 사용해 파일 선택 기능 구현
  • FormData를 통해 선택된 파일fetch로 서버 전송
  • 업로드 후 문서 목록에 문서 이름 표시
  • 관리자 권한이 있을 경우 삭제 버튼 노출

4. 삭제 기능 – 권한 제어

  • DELETE 엔드포인트 @Delete(':docId') 생성
  • AuthGuardRoleGuard 미들웨어를 통해 관리자(Admin, Super Admin)만 삭제 허용
  • Prisma ORM을 통해 데이터베이스에서 문서 삭제

5. 핵심 학습 포인트

  • NestJSFileInterceptor파일 업로드 로직을 간결하게 처리
  • RBAC를 통해 사용자 권한에 따라 UI 요소를 동적으로 제어
  • 파일 메타데이터 저장은 추적 및 관리 용이성을 위해 필수
  • 법률 플랫폼에서 업로드 프로세스의 신뢰성이 중요

결론

  • 로컬 저장소는 임시로 사용, 이후 클라우드 저장소(예: AWS S3)로 이전 계획
  • RBAC 구현메타데이터 저장이 보안 및 추적성 향상에 핵심
  • 사용자 경험을 위해 업로드 인터페이스를 직관적으로 설계해야 함
  • 보안을 위해 인증/인가 미들웨어권한 체크 로직 반드시 적용

> 질문: 당신의 앱에서 보안 파일 업로드는 어떻게 처리하시나요? 로컬 vs 클라우드 저장소 중 어떤 것을 선호하시나요?