From 505f660dbda86bfb455eb1714c4ac47d09053df4 Mon Sep 17 00:00:00 2001 From: Fendy Date: Mon, 7 Sep 2026 20:16:26 +0800 Subject: [PATCH] fix: self-heal missing library root on access; accept .zip in admin upload picker --- backend/internal/api/libraries.go | 4 ++++ web/src/pages/admin/Libraries.tsx | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/backend/internal/api/libraries.go b/backend/internal/api/libraries.go index 78e20cc..cd13683 100644 --- a/backend/internal/api/libraries.go +++ b/backend/internal/api/libraries.go @@ -26,6 +26,10 @@ func (a *api) libRoot(c *gin.Context, lib store.Library) (string, bool) { err(c, http.StatusForbidden, "forbidden", "library root outside books dir") return "", false } + if e := os.MkdirAll(root, 0o755); e != nil { // 注册库时目录可能尚未落盘,自愈 + err(c, http.StatusInternalServerError, "internal", "library root") + return "", false + } return root, true } diff --git a/web/src/pages/admin/Libraries.tsx b/web/src/pages/admin/Libraries.tsx index 712168a..0b2cb8f 100644 --- a/web/src/pages/admin/Libraries.tsx +++ b/web/src/pages/admin/Libraries.tsx @@ -83,7 +83,7 @@ export default function AdminLibraries() { }} type="file" multiple - accept=".cbz,.pdf,.epub,.txt,.md" + accept=".cbz,.zip,.pdf,.epub,.txt,.md" className="hidden" onChange={(e) => { void onFiles(l.id, e.target.files); @@ -93,7 +93,7 @@ export default function AdminLibraries() { - 白名单:cbz/pdf/epub/txt/md + 白名单:cbz/zip/pdf/epub/txt/md ))}