from fastapi import FastAPI, HTTPException, Request from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import FileResponse from utils.pictures_handle import get_pictures_info import os from fastapi.staticfiles import StaticFiles app = FastAPI() app.mount("/static", StaticFiles(directory="pictures"), name="static") app.add_middleware( CORSMiddleware, allow_origins=["http://localhost:5173"], # 允许的源列表 allow_credentials=True, allow_methods=["*"], # 允许的方法 allow_headers=["*"], # 允许的头 ) @app.get("/") async def root(): return "welcome to fastAPI!" @app.get("/api/get-menu") async def get_menu(): menu_list = [ {"id": 1, "menu_name": "首页", "url": "/", "src": "/index.svg"}, {"id": 2, "menu_name": "图片", "url": "/photos", "src": "/photo.svg"}, {"id": 3, "menu_name": "视频", "url": "/videos", "src": "/videos.svg"}, {"id": 4, "menu_name": "关于", "url": "/about", "src": "/about.svg"} ] return { "code": 0, "msg": "ok", "data": menu_list } @app.get("/api/get-photo-list") async def get_photo_list(): base_url = "http://127.0.0.1:5173/" dir = "pictures" photo_list = get_pictures_info(dir) for photo in photo_list: photo["photo_url"] = f"http://127.0.0.1:8000/static/{photo['photo_name']}" # print(photo_list) return { "code": 0, "msg": "ok", "data": photo_list } @app.get("/static/{photo_name}") async def get_photo(photo_name: str,request: Request): request_path = str(request.url) dir = "pictures" file_path = os.path.join(dir, photo_name) if os.path.exists(file_path): return FileResponse(file_path) else: print(f"ERROR: {request_path}") return { "code": -1, "msg": "error", "data": None }