文件选择 — 融合方案:拖拽 + 系统对话框 + 可信根路径输入
真实任务不变:选择本地 CSV 导入、选择导出保存位置。三入口融合:① 拖拽(所有端);② 系统对话框(桌面端 Tauri);③ 手动路径输入(仅可信根内相对路径)。
安全红线(M1-05 / io 可信根):手动输入路径只允许项目目录/可信根内相对路径(带目录浏览联动),禁止任意绝对路径——Web 端经 loopback server 读取时尤其重要,不得打开任意路径读取面。Web 工作台必须始终可用(拖拽 + input 兜底)。
✓
融合目标形态
同一「选择名单文件」入口:可拖拽文件到区域、可点「浏览…」调系统对话框(桌面端)、可输入可信根内路径。
localhost:8765/class-302/students/import
导入名单 · 选择文件
支持 CSV / XLSX · 拖拽、浏览、路径输入三种方式
📂
将文件拖到此处,或点击「浏览…」
桌面端打开系统对话框
或输入路径:
项目目录/
🔒 仅可信根内相对路径
路径输入限定在项目目录/可信根内(安全红线):拒绝绝对路径与「..」逃逸;桌面端系统对话框返回的路径同样经 io 层校验(现有路径逃逸防御复用)。
三入口统一封装为「文件选择」组件;Web 端「浏览…」回退到浏览器 input(能力探测驱动)。
| 设计要点 | 说明 |
|---|---|
| 三入口 | 拖拽(所有端)/ 系统对话框(Tauri 桌面端)/ 路径输入(可信根内相对路径,目录浏览联动) |
| 安全边界 | 任意绝对路径禁止(M1-05/io 可信根);Web 端 loopback server 读取必须经校验 |
| 能力探测 | 桌面/Web 差异由 capability 目录驱动(Tauri dialog 可用性) |
| schema/API 影响 | Tauri dialog 插件依赖 + 权限清单;可信根校验复用 io 层现有防御 |
待研究(不冻结):
- 路径输入框交互形态(自动补全/目录浏览联动)
- E2E 中系统对话框的自动化策略