Files
zTools2/static/file_browser.html
zikai ff2ad3fcb3 feat: 所有入口统一到 /api/ 前缀
将 zTools2 托管的页面/静态/探针/WebSocket 路由全部从顶级路径迁移到 /api/ 下:
- 页面:/pdf -> /api/pdf、/pdf-admin -> /api/pdf-admin、/upload -> /api/upload、
  /files -> /api/files-page、/wb/{id} -> /api/wb-page/{id}、/wb-admin -> /api/wb-admin
  (页面类加 -page 后缀以规避同名 REST API /api/files、/api/wb/{id})
- 静态资源:/static -> /api/static
- 探针:/health -> /api/health
- WebSocket:/ws/wb/{id} -> /api/ws/wb/{id}
- 前端 HTML 壳与 JS 中的资源/页间链接/WS URL 同步更新
- 手动测试脚本 BASE_WS 同步

这样反代与 vite proxy 只需一条 /api/ 规则即可转发全部入口;
前端 iframe 用同源相对路径 /api/pdf,与环境无关,不再误打到其它环境域名。
README 新增「路由约定」说明。
2026-07-27 15:42:47 +08:00

48 lines
1.5 KiB
HTML

<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>文件浏览 - zikai</title>
<link rel="stylesheet" href="/api/static/common.css">
<link rel="stylesheet" href="/api/static/file_browser.css">
</head>
<body>
<div class="wrap">
<h1>文件浏览</h1>
<p class="sub">查看已上传的文件、下载或删除。支持多选与分页。删除后不再显示。</p>
<div class="toolbar">
<button class="btn primary" id="refresh">刷新</button>
<span class="muted" id="count"></span>
<span class="toolbar-spacer"></span>
<label class="page-size">每页
<select id="pageSize">
<option value="20">20</option>
<option value="50">50</option>
<option value="100" selected>100</option>
<option value="all">全部</option>
</select>
</label>
</div>
<div id="batchbar" class="batchbar hidden">
<span class="batchbar-info">已选 <b id="selCount">0</b></span>
<button class="btn primary" id="batchDownload">批量下载</button>
<button class="btn danger" id="batchDelete">批量删除</button>
<button class="btn ghost" id="clearSel">取消选择</button>
</div>
<div id="list">
<div class="skel">加载中…</div>
</div>
<div id="pager" class="pager hidden"></div>
<p class="foot"><a class="link" href="/api/upload">上传文件</a> · zikai file service</p>
</div>
<script src="/api/static/common.js"></script>
<script src="/api/static/file_browser.js"></script>
</body>
</html>