修改查看图片的问题

This commit is contained in:
2025-02-25 16:44:32 +08:00
parent ef95c99f44
commit e96175bc2a
33 changed files with 59 additions and 8445 deletions

View File

@ -30,6 +30,12 @@ def get_type_list(session: Session = Depends(get_db)):
@project.post("/list")
def project_pager(info: ProjectInfoPager, session: Session = Depends(get_db)):
"""
:param info:
:param session:
:return:
"""
pager = pic.get_project_pager(info, session)
return rc.response_success_pager(pager)
@ -120,7 +126,9 @@ def del_label(label_id: int, session: Session = Depends(get_db)):
@project.post("/up_proj_img")
def upload_project_image(project_id: int = Form(...), files: List[UploadFile] = File(...), session: Session = Depends(get_db)):
def upload_project_image(project_id: int = Form(...),
files: List[UploadFile] = File(...),
session: Session = Depends(get_db)):
"""
上传项目图片
:param files: 文件图片

View File

@ -1,20 +1,41 @@
import os
from fastapi import APIRouter, HTTPException
from fastapi import APIRouter, HTTPException, Depends
from starlette.responses import FileResponse
from sqlalchemy.orm import Session
from app.model.crud.project_image_crud import get_img_url
from app.config.config_reader import images_url
from app.db.db_session import get_db
view = APIRouter()
@view.get("/{file_path:path}")
def view_img(file_path):
@view.get("/view_img/{image_id}")
def view_img(image_id: int, session: Session = Depends(get_db)):
"""
查看图片
:param file_path: 图片路径
:param session:
:param image_id: 图片id
:return:
"""
image_path = os.path.join(images_url, file_path)
sour_url, thumb_url = get_img_url(image_id, session)
image_path = os.path.join(images_url, sour_url)
# 检查文件是否存在以及是否是文件
if not os.path.isfile(image_path):
raise HTTPException(status_code=404, detail="Image not found")
return FileResponse(image_path, media_type='image/jpeg')
@view.get("/view_thumb/{image_id}")
def view_thumb(image_id: int, session: Session = Depends(get_db)):
"""
查看图片
:param session:
:param image_id: 图片id
:return:
"""
sour_url, thumb_url = get_img_url(image_id, session)
image_path = os.path.join(images_url, thumb_url)
# 检查文件是否存在以及是否是文件
if not os.path.isfile(image_path):
raise HTTPException(status_code=404, detail="Image not found")

View File

@ -7,7 +7,7 @@ from app.application.logger_middleware import LoggerMiddleware
from app.api.common.upload_file import upload_files
from app.api.sys.login_api import login
from app.api.sys.sys_user_api import user
from app.api.business.project_api import project
from app.api.business.project_train_api import project
from app.api.common.view_img import view
my_app = FastAPI()
@ -32,7 +32,7 @@ my_app.add_middleware(TokenMiddleware)
my_app.include_router(login, prefix="/login", tags=["用户登录接口"])
my_app.include_router(upload_files, prefix="/upload", tags=["文件上传API"])
my_app.include_router(view, prefix="/view_img", tags=["查看图片"])
my_app.include_router(view, tags=["查看图片"])
my_app.include_router(user, prefix="/user", tags=["用户管理API"])
my_app.include_router(project, prefix="/proj", tags=["项目管理API"])

View File

@ -5,6 +5,15 @@ from jwt import PyJWTError
from app.common import reponse_code as rc
from app.common import jwt_check as jc
green = ['/login', '/view_img', 'view_thumb']
def check_green(s: str):
for url in green:
if url in s:
return True
return False
class TokenMiddleware(BaseHTTPMiddleware):
@ -33,11 +42,3 @@ class TokenMiddleware(BaseHTTPMiddleware):
return rc.response_code_view(status.HTTP_401_UNAUTHORIZED, "Token错误或失效请重新验证")
green = ['/login', '/view_img', 'test']
def check_green(s: str):
for url in green:
if url in s:
return True
return False

View File

@ -14,6 +14,19 @@ def get_image_pager(image: ProjectImagePager, session: Session):
return pager
def get_img_url(image_id: int, session: Session):
"""
根据id获取图片
:param image_id:
:param session:
:return:
"""
result = session.query(piModel).filter_by(id=image_id).first()
sour_url = result.image_url
thumb_url = result.thumb_image_url
return sour_url, thumb_url
def get_image_list(project_id: int, session: Session):
query = session.query(piModel).filter(piModel.project_id == project_id).order_by(asc(piModel.id))
image_list = [ProjectImage.from_orm(image).dict() for image in query.all()]