Files
LabelChange-server/.trae/specs/pdf_upload_spec.md
2026-06-01 16:30:29 +08:00

188 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PDF上传功能技术规范
## 1. 需求分析
### 1.1 功能需求
- 允许用户上传PDF文件到服务器
- 服务器通过FTP协议将文件存储到指定位置
- 提供上传状态反馈和错误处理
- 支持文件验证和安全性检查
### 1.2 技术要求
- 安全性FTP账号密码不暴露在前端
- 可靠性:支持大文件上传和断点续传
- 可扩展性:易于集成到现有系统
- 兼容性:支持主流浏览器
## 2. 技术方案
### 2.1 实现方式选择
| 方案 | 优点 | 缺点 | 推荐度 |
|------|------|------|--------|
| 前端直接FTP上传 | 操作直观,无需修改后端 | 安全性差,浏览器兼容性问题 | ❌ |
| 后端API上传 | 安全性高,支持服务器端处理 | 需要修改后端代码 | ✅ |
**推荐方案**后端API上传
- 理由安全性更高FTP账号密码保存在服务器端支持服务器端验证和处理
- 架构:前端 → 后端API → FTP服务器
### 2.2 技术栈
- 前端HTML5, JavaScript, jQuery, Bootstrap
- 后端ASP.NET Core, C#
- FTP客户端FluentFTP推荐或System.Net.FtpWebRequest
## 3. 架构设计
### 3.1 后端架构
```mermaid
flowchart TD
A[前端上传请求] --> B[UploadController.PdfUpload]
B --> C[文件验证]
C --> D[FTP上传服务]
D --> E[FTP服务器]
D --> F[返回上传结果]
F --> A
```
### 3.2 前端架构
```mermaid
flowchart TD
A[用户选择PDF文件] --> B[文件验证]
B --> C[AJAX上传请求]
C --> D[UploadController.PdfUpload]
D --> E[显示上传进度]
E --> F[显示上传结果]
```
## 4. 详细设计
### 4.1 后端API设计
#### 4.1.1 接口定义
| API路径 | 方法 | 功能 | 参数 | 返回值 |
|---------|------|------|------|--------|
| /api/upload/pdf | POST | 上传PDF文件 | files: List<IFormFile><br>type: string<br>folder: string | {code: int, message: string, data: List<string>} |
#### 4.1.2 实现细节
- 扩展现有UploadController添加PdfUpload方法
- 集成FTP客户端库实现FTP上传功能
- 添加文件验证逻辑(大小、类型、安全性)
- 实现错误处理和日志记录
### 4.2 前端界面设计
#### 4.2.1 界面元素
- 文件选择器:支持多文件选择
- 上传按钮:触发上传操作
- 进度显示:实时显示上传进度
- 结果反馈:显示上传成功/失败信息
- 历史记录:显示已上传的文件列表
#### 4.2.2 实现细节
- 在batch_query.html中添加PDF上传标签页
- 使用FormData和XMLHttpRequest实现文件上传
- 添加文件验证逻辑(大小、类型)
- 实现上传进度监听
## 5. 安全性考虑
### 5.1 后端安全
- FTP账号密码存储在配置文件中不硬编码
- 实现文件类型验证只允许PDF文件
- 实现文件大小限制
- 添加文件内容安全检查
- 记录上传日志,便于审计
### 5.2 前端安全
- 实现客户端文件类型验证
- 实现客户端文件大小限制
- 防止XSS攻击
- 保护用户隐私
## 6. 性能优化
### 6.1 后端优化
- 使用异步上传,避免阻塞主线程
- 实现断点续传功能
- 优化FTP连接管理
- 使用缓存机制减少重复上传
### 6.2 前端优化
- 实现分块上传,支持大文件
- 添加上传进度显示
- 优化UI响应速度
- 实现上传队列管理
## 7. 测试计划
### 7.1 功能测试
- 单文件上传测试
- 多文件上传测试
- 大文件上传测试
- 错误处理测试
- 边界情况测试
### 7.2 性能测试
- 上传速度测试
- 并发上传测试
- 系统负载测试
### 7.3 安全性测试
- 文件类型验证测试
- 文件大小限制测试
- 安全性检查测试
## 8. 实施计划
### 8.1 后端开发
1. 添加FTP客户端库依赖
2. 扩展UploadController添加PdfUpload方法
3. 实现FTP上传服务
4. 添加文件验证逻辑
5. 编写单元测试
### 8.2 前端开发
1. 在batch_query.html中添加PDF上传标签页
2. 实现文件选择和上传功能
3. 添加进度显示和结果反馈
4. 实现错误处理
### 8.3 测试和部署
1. 功能测试
2. 性能测试
3. 安全性测试
4. 部署到测试环境
5. 部署到生产环境
## 9. 预期效果
### 9.1 功能效果
- 用户可以通过前端界面上传PDF文件
- 系统将文件通过FTP上传到指定服务器
- 用户可以看到上传进度和结果
- 系统提供错误处理和反馈
### 9.2 技术效果
- 安全性高FTP账号密码不暴露
- 可靠性强,支持大文件上传
- 扩展性好,易于集成到现有系统
- 兼容性好,支持主流浏览器
## 10. 风险评估
### 10.1 潜在风险
- FTP服务器连接失败
- 大文件上传超时
- 网络不稳定导致上传失败
- 安全性漏洞
### 10.2 风险缓解
- 实现重试机制
- 设置合理的超时时间
- 实现断点续传
- 加强安全性检查
- 完善错误处理和日志记录