54 lines
1.8 KiB
Markdown
54 lines
1.8 KiB
Markdown
# 프로젝트 개요
|
|
- 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)
|