Build a Full Stack File Upload System with Next.js, UploadThing & Prisma
- Next.js, UploadThing, Prisma를 활용하여 드래그 앤 드롭 및 파일 미리보기 기능을 갖춘 풀스택 파일 업로드 시스템 구축 방법을 설명합니다. 🚀
react-dropzone 라이브러리를 사용하여 직관적인 드래그 앤 드롭 UI를 구현하고, 파일 유형(이미지/비디오)에 따라 동적으로 미리보기를 제공합니다. 🖼️
- 업로드 전 이미지와 비디오 파일만 허용하며, 한 번에 하나의 파일만 업로드하도록 제한하는 유효성 검사 로직을 포함합니다. 🚫
- UploadThing 서비스를 통해 파일 저장 및 업로드 API를 처리하며, API 키를 환경 변수로 설정하고
core.ts 및 route.ts 파일을 구성합니다. ☁️
core.ts 파일에서 createUploadthing을 사용하여 이미지 및 비디오의 최대 파일 크기를 정의하고, 업로드 완료 시 onUploadComplete 콜백을 통해 파일 URL을 처리합니다. ⚙️
- 클라이언트 측에서는
useUploadThing 훅을 사용하여 업로드 기능을 트리거하고, 업로드 진행 상태를 관리하며, 업로드 완료 후 클라이언트 측 로직을 실행합니다. 📤
- 최종적으로 업로드된 파일의 URL을 Prisma ORM을 통해 데이터베이스에 저장하여 파일 관리의 영속성을 확보합니다. 💾
- Next.js의 App Router와 클라이언트 컴포넌트(
"use client")를 활용하여 react-dropzone과 같은 클라이언트 전용 훅을 통합하는 방법을 보여줍니다. 💻