This commit is contained in:
commit
46af290db3
100 files changed
+16663
No files matched your search
@@ -0,0 +1,40 @@
|
||||
from pathlib import Path
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from fastapi.responses import FileResponse
|
||||
from models.user import User
|
||||
from services.project_service import project_service
|
||||
|
||||
from routers.auth import get_current_user
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/images/{project_id}/{filename}")
|
||||
async def get_image(
|
||||
project_id: str, filename: str, current_user: User = Depends(get_current_user)
|
||||
):
|
||||
"""Отдаёт изображение из папки проекта"""
|
||||
try:
|
||||
project_dir = project_service.get_project_dir(project_id, current_user.id)
|
||||
image_path = project_dir / "images" / filename
|
||||
|
||||
if not image_path.exists():
|
||||
raise HTTPException(status_code=404, detail="Image not found")
|
||||
|
||||
# Определяем MIME тип по расширению
|
||||
suffix = Path(filename).suffix.lower()
|
||||
mime_types = {
|
||||
".png": "image/png",
|
||||
".jpg": "image/jpeg",
|
||||
".jpeg": "image/jpeg",
|
||||
".webp": "image/webp",
|
||||
".gif": "image/gif",
|
||||
}
|
||||
|
||||
return FileResponse(
|
||||
path=image_path,
|
||||
media_type=mime_types.get(suffix, "application/octet-stream"),
|
||||
)
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=404, detail=str(e))
|
||||
Reference in new issue
Block a user