# 2026-06-01 文件管理页迭代 v2 ## 日期 2026-06-01 ## 变更摘要 `#/files` 第二轮迭代:修复下载、预览对话框、URL 状态、筛选/拖拽上传、符号链接展示。 ## 动机 - 下载 API 返回二进制流,原 `http.post` JSON 解析导致「下载已开始」但实际失败 - 预览用 snackbar 无法阅读;刷新丢失当前路径 - 对标历史 file-manager v2 规划中的状态栏、拖拽、筛选能力 ## 涉及文件 - `frontend/src/api/index.ts` — `fetchAuthed` / `http.download` - `frontend/src/utils/fileDownload.ts` — 浏览器保存 Blob - `frontend/src/pages/FilesPage.vue` — UI/交互迭代 - `frontend/src/utils/remotePath.ts` — `validatePathSegment` - `frontend/src/utils/fileBrowse.ts` / `types/api.ts` — symlink - `server/api/sync_v2.py` — browse 返回 `symlink` + `link_target` - `docs/design/plans/2026-06-01-files-page-iteration.md` ## 迁移 / 重启 - 前端构建部署至 `web/app/` - 后端 `sync_v2.py` 需部署并 `supervisorctl restart nexus`(symlink 字段) ## 追加(默认路径) - 文件管理器初始/切换服务器时默认打开 `/www/wwwroot`(`DEFAULT_FILES_ROOT`) ## 追加(交互) - 进入目录/符号链接:单击行即可(不再要求双击) - 普通文件:双击行打开 Monaco 编辑 ## 验证方式 1. 选服务器进入子目录,URL 含 `?server_id=&path=`,刷新后位置保持 2. 双击目录进入;面包屑/上级可用 3. 下载文件可本地打开 4. 查看文本文件弹出预览对话框 5. 拖拽文件到列表区域触发上传 6. 筛选框过滤当前目录文件名