Files
Nexus/docs/changelog/2026-06-01-files-clipboard-transfer.md
T

49 lines
1.5 KiB
Markdown
Raw Normal View History

# 文件管理:剪切 / 复制 / 粘贴
**日期**2026-06-01
## 摘要
实现 v2 设计中的远程文件剪贴板:`POST /api/sync/file-clipboard``cp -r` / `mv -t`),前端 Ctrl+C/X/V、工具栏粘贴、右键菜单与状态芯片。
## 动机
用户要求补齐此前因缺少后端 API 未实现的剪切/复制/粘贴。
## 涉及文件
- `server/api/schemas.py``FileClipboardApply`
- `server/api/remote_path_validation.py`(新建)
- `server/api/sync_v2.py``/file-clipboard`
- `frontend/src/composables/useFilesClipboard.ts`(新建)
- `frontend/src/composables/useFilesHotkeys.ts`
- `frontend/src/pages/FilesPage.vue`
- `tests/test_remote_path_validation.py`(新建)
- `docs/design/specs/2026-06-01-files-clipboard-transfer-design.md`
## 安全
- 绝对路径 + 禁止 `..`
- 禁止粘贴到源目录子路径
- 审计 `file_copy` / `file_move`
## 迁移 / 重启
需部署**后端 + 前端**(新 API)。
## 验证
```bash
pytest tests/test_remote_path_validation.py -q
```
浏览器:复制→进入另一目录→粘贴;剪切→粘贴后源消失;跨服务器粘贴应提示。
---
## 2026-06-01 补充:跨目录粘贴
- 粘贴目标:默认当前目录;**单选一个文件夹**时粘贴到该文件夹;**右键目录**「粘贴到 xxx」;**目录树右键**粘贴到该节点
- 状态栏显示剪贴板内容与粘贴目标路径
- 前端 `validatePasteTarget` 与后端一致,禁止粘贴到源目录内部