# 프로젝트 개요 - fastapi를 이용한 파일 업로드/다운로드 프로그램 작성 # 기능 - **파일 업로드**: 이미지, 비디오, 기타 파일을 구분하여 서버에 저장 - 이미지 파일은 `assets/images/`에 저장 - 비디오 파일은 `assets/videos/`에 저장 - 기타 파일은 `assets/files/`에 저장 - **메타데이터 관리**: 업로드된 파일의 정보를 `assets/metadata.json`에 기록 - **파일 다운로드**: 저장된 이름을 통해 파일 다운로드 지원 - **API 구현**: fastapi를 통해 파일 업로드 및 다운로드를 위한 api 구현 - **API 정의**: - 파일 업로드: /api/files/upload - 파일 다운로드: /api/files/download - static (웹 (html, css, javascript) 서빙) : /web - **웹 인터페이스**: `/web` 경로를 통해 접속 가능한 간단한 HTML 프론트엔드 제공 ## 설치 및 실행 ### 1. 가상환경 설정 `venv`를 이용하여 `.venv` 디렉터리에 개발을 위한 가상환경을 설정하고, 활성화 합니다. ```bash python -m venv .venv source .venv/bin/activate ``` ### 2. 의존성 설치 ```bash pip install fastapi uvicorn python-multipart ``` ### 3. 서비스 실행 ```bash python main.py ``` 또는 ```bash uvicorn main:app --reload ``` ### 4. 접속 - **Web UI**: `http://localhost:{port}/web` - **API Docs**: `http://localhost:{port}/docs` - port는 "8000"번 사용 ## 디렉토리 구조 - `main.py`: FastAPI 애플리케이션 및 API 로직 - `assets/`: 업로드된 파일 및 메타데이터 저장소 - `assets/images/`: 이미지 파일 저장소 - `assets/videos/`: 비디오 파일 저장소 - `assets/files/`: 기타 파일 저장소 - `assets/metadata.json`: 메타데이터 저장소 - `static/`: 프론트엔드 자산 (index.html)