From f2c71ff91a1efa59979d80ca609cb87de3496b28 Mon Sep 17 00:00:00 2001 From: YANG JIANKUAN Date: Mon, 20 Apr 2026 17:34:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E6=92=AD=E6=94=BE=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 /video/:id 路由与 VideoPage 组件 - 视频文件通过 /uploads/videos/{id}.mp4 静态访问 - .gitignore 排除 videos 目录,避免大文件入库 Co-Authored-By: Claude Opus 4.6 --- .gitignore | 1 + packages/web/src/App.tsx | 2 ++ packages/web/src/pages/VideoPage.tsx | 22 ++++++++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 packages/web/src/pages/VideoPage.tsx diff --git a/.gitignore b/.gitignore index 69f882f..9ae39e2 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ dist/ .env uploads/* !uploads/.gitkeep +packages/server/uploads/videos/ .DS_Store *.tsbuildinfo .claude/settings.local.json diff --git a/packages/web/src/App.tsx b/packages/web/src/App.tsx index 68ed664..d057a19 100644 --- a/packages/web/src/App.tsx +++ b/packages/web/src/App.tsx @@ -4,6 +4,7 @@ import LandingPage from "./pages/LandingPage"; import AlbumPage from "./pages/AlbumPage"; import ArticlePage from "./pages/ArticlePage"; import MusicPage from "./pages/MusicPage"; +import VideoPage from "./pages/VideoPage"; import AdminLogin from "./admin/AdminLogin"; import AdminGuard from "./admin/AdminGuard"; import AdminLayout from "./admin/AdminLayout"; @@ -29,6 +30,7 @@ export default function App() { } /> } /> } /> + } /> {/* Admin panel */} } /> diff --git a/packages/web/src/pages/VideoPage.tsx b/packages/web/src/pages/VideoPage.tsx new file mode 100644 index 0000000..4a9bbed --- /dev/null +++ b/packages/web/src/pages/VideoPage.tsx @@ -0,0 +1,22 @@ +import { useParams } from "react-router-dom"; + +export default function VideoPage() { + const { id } = useParams(); + const src = id ? `/uploads/videos/${id}.mp4` : ""; + + return ( +
+ {id ? ( +
+ ); +}