2025-06-10 16:38:27 +03:00

33 lines
1.4 KiB
Python

from fastapi import File, UploadFile, HTTPException, Depends
from fastapi.security import HTTPAuthorizationCredentials
from sqlalchemy.orm import Session
from pathlib import Path
from urllib.parse import urljoin
from fastapi import Request
BASE_URL = "http://127.0.0.1:8000"
def get_upload_dir(user_id: int) -> Path:
"""Возвращает путь для сохранения файлов пользователя."""
upload_dir = Path(f"res/user/{user_id}")
upload_dir.mkdir(parents=True, exist_ok=True)
return upload_dir
def get_poster_dir(poster_id: int) -> Path:
"""Возвращает путь для сохранения обложек постеров."""
poster_dir = Path(f"res/poster/{poster_id}")
poster_dir.mkdir(parents=True, exist_ok=True)
return poster_dir
def save_file(file: UploadFile, target_dir: Path) -> Path:
"""Сохраняет файл в указанной директории и возвращает путь к файлу."""
file_path = target_dir / file.filename
with open(file_path, "wb") as f:
f.write(file.file.read())
return file_path
def generate_file_url(request: Request, file_path: Path) -> str:
"""Генерирует URL для доступа к файлу."""
relative_path = file_path.relative_to(Path("res"))
return urljoin(str(request.base_url), f"res/{relative_path}")