Files
g0v0-server/app/router/file.py
2025-08-12 08:40:27 +00:00

27 lines
891 B
Python

from __future__ import annotations
from app.dependencies.storage import get_storage_service
from app.storage import LocalStorageService, StorageService
from fastapi import APIRouter, Depends, HTTPException
from fastapi.responses import FileResponse
file_router = APIRouter(prefix="/file", include_in_schema=False)
@file_router.get("/{path:path}")
async def get_file(path: str, storage: StorageService = Depends(get_storage_service)):
if not isinstance(storage, LocalStorageService):
raise HTTPException(404, "Not Found")
if not await storage.is_exists(path):
raise HTTPException(404, "Not Found")
try:
return FileResponse(
path=storage._get_file_path(path),
media_type="application/octet-stream",
filename=path.split("/")[-1],
)
except FileNotFoundError:
raise HTTPException(404, "Not Found")