# 跨服务器传输独立页面 **日期**:2026-06-21 ## 摘要 将「跨服务器文件直传 / 打包投递」从文件管理页内嵌对话框拆分为独立 SPA 页面 `#/server-transfer`,侧栏新增入口;文件页工具栏与右键改为跳转并预填源机与路径。 ## 动机 - 传输流程涉及源机浏览、多选、目标机与模式选择,独立页比对话框更易操作与扩展。 - 与文件管理职责分离:文件页专注浏览编辑,传输页专注 A→B 编排。 ## 涉及文件 | 路径 | 变更 | |------|------| | `frontend/src/pages/ServerTransferPage.vue` | 新建完整页(源浏览 + 目标配置 + 执行) | | `frontend/src/composables/useServerFileTransfer.ts` | 新建页 composable;支持 query `source`/`path`/`paths` | | `frontend/src/router/index.ts` | 路由 `/server-transfer` | | `frontend/src/App.vue` | 侧栏「跨服务器传输」 | | `frontend/src/composables/files/useFilesActions.ts` | 移除内嵌传输逻辑,改为 `goToServerTransfer` | | `frontend/src/composables/files/useFilesPage.ts` | 导出 `goToServerTransfer` | | `frontend/src/components/files/FilesToolbar.vue` | 按钮跳转独立页 | | `frontend/src/components/files/FilesDialogs.vue` | 移除传输对话框 | | `web/app/assets/ServerTransferPage-*` | Vite 构建产物 | ## 行为说明 - 文件页选中项后点「发送到其他服务器」→ `#/server-transfer?source=&path=&paths=`(路径 `|` 分隔)。 - 独立页可手动输入绝对路径、浏览源机目录、直传或打包投递;目标路径仍用 `localStorage` 键 `nexus:file-transfer-dest:{mode}:{serverId}`。 - 后端 API 不变:`POST /sync/server-transfer`、`POST /sync/server-transfer/deliver`。 ## 迁移 / 重启 - 仅前端静态资源更新,无需 DB 迁移。 - 部署:重新 `vite build` 并同步 `web/app/`。 ## 验证 ```bash cd frontend && npx vite build # 浏览器:侧栏「跨服务器传输」;文件页选中后跳转预填;直传/投递 smoke ```