# pathology-slice-uploader **Repository Path**: peakb_admin/pathology-slice-uploader ## Basic Information - **Project Name**: pathology-slice-uploader - **Description**: https://github.com/niu-peng/pathology-slice-uploader - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-28 - **Last Updated**: 2026-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 病理切片文件上传工具 ## 项目概述 病理切片文件上传工具是一个专门用于处理和管理数字病理切片(Whole Slide Imaging, WSI)文件的Web应用。该工具支持大文件分片上传、文件分类存储、完整性验证以及便捷的文件下载功能,为病理数据管理提供高效解决方案。 ![工具主界面](public/index.jpg) ## 功能特性 ### 前端功能 - 📁 **文件上传**:支持拖拽上传和点击选择文件 - 📊 **进度显示**:实时显示上传进度条和百分比 - 📝 **状态提示**:各阶段上传状态的详细文字描述 - 📥 **文件下载**:上传完成后可直接下载文件 - 📋 **文件信息**:显示上传文件的详细信息(名称、分类、大小、路径) - 🔄 **断点续传**:支持大文件分片上传,提高传输可靠性 ### 后端功能 - 📁 **文件分类**:根据文件格式自动分类存储(aperio、hamamatsu、leica等) - 🔍 **格式验证**:仅支持指定的WSI文件格式 - ✅ **完整性校验**:支持MD5文件完整性验证 - 🗂️ **静态服务**:上传文件可通过URL直接访问 - 📊 **上传进度**:支持查询上传进度 - 🧹 **临时文件清理**:上传完成后自动清理临时切片文件 ## 技术栈 ### 前端 - HTML5 - CSS3 - JavaScript (ES6+) ### 后端 - Node.js - Express - Multer (文件上传中间件) - File System (文件系统操作) - Path (路径处理) ## 支持的文件格式 - `.svs` (Aperio) - `.ndpi` (Hamamatsu) - `.scn` (Leica) - `.kfb` (3DHISTECH) - `.mrxs` (Aperio MRXS) - `.bif` (Philips) - `.vms` (Ventana) - `.vmu` (Ventana) - `.tif`/`.tiff` (TIFF) ## 安装与运行 ### 环境要求 - Node.js 12.0.0 或更高版本 - npm 6.0.0 或更高版本 ### 安装步骤 1. **克隆项目** ```bash git clone cd node/mongoServe ``` 2. **安装依赖** ```bash npm install ``` 3. **启动服务器** ```bash node index.js ``` 4. **访问应用** - 服务器地址:`http://localhost:9999` - 上传页面:`http://localhost:9999/public/upload.html` - API文档:`http://localhost:9999/api/api-info` ## 使用指南 ### 上传文件 1. **选择文件** - 点击上传区域或拖拽文件到上传区域 - 系统会自动检测文件格式是否支持 ![选择文件界面](public/selectFile.jpg) 2. **查看上传进度** - 上传过程中会显示进度条和实时百分比 - 大文件会自动进行分片上传 ![上传进度界面](public/uploading.jpg) 3. **完成上传** - 上传完成后会显示文件信息和下载链接 - 点击"📥 下载文件"按钮可直接下载上传的文件 ![上传完成界面](public/end.jpg) ### 下载文件 - 上传完成后,系统会生成下载链接 - 链接格式:`http://localhost:9999/uploads/[分类]/[文件名]` - 可直接点击链接下载或复制链接分享 ## 项目结构 ``` mongoServe/ ├── public/ │ └── upload.html # 前端上传页面 ├── routes/ │ ├── index.js # 路由索引 │ └── upload.js # 上传相关路由 ├── utils/ │ └── fileChunk.js # 文件分片处理工具 ├── uploads/ # 上传文件存储目录 │ ├── aperio/ # Aperio格式文件 │ ├── hamamatsu/ # Hamamatsu格式文件 │ └── ... # 其他格式文件目录 ├── index.js # 服务器入口文件 ├── package.json # 项目配置文件 └── README.md # 项目说明文档 ``` ## API 端点 ### 文件上传 #### 1. 初始化分片上传 - **URL**: `/api/upload/wsi/init` - **Method**: POST - **参数**: - `filename`: 文件名 - `fileSize`: 文件大小 - `md5`: 文件MD5(可选) - **返回**: 上传ID和分片信息 #### 2. 上传分片 - **URL**: `/api/upload/wsi/chunk` - **Method**: POST - **参数**: - `uploadId`: 上传ID - `chunkIndex`: 分片索引 - `file`: 文件分片 - **返回**: 分片上传状态 #### 3. 合并分片 - **URL**: `/api/upload/wsi/merge` - **Method**: POST - **参数**: - `uploadId`: 上传ID - `filename`: 文件名 - `md5`: 文件MD5(可选) - **返回**: 合并结果和文件信息 #### 4. 普通文件上传 - **URL**: `/api/upload/wsi` - **Method**: POST - **参数**: `file`: 上传文件 - **返回**: 上传结果和文件信息 ### 查询与管理 #### 1. 查询上传进度 - **URL**: `/api/upload/wsi/progress` - **Method**: GET - **参数**: `uploadId`: 上传ID - **返回**: 上传进度信息 #### 2. 获取支持的文件格式 - **URL**: `/api/upload/wsi/formats` - **Method**: GET - **返回**: 支持的WSI文件格式列表 #### 3. 列出所有文件 - **URL**: `/api/upload/wsi/files` - **Method**: GET - **返回**: 所有已上传文件列表 ## 配置说明 ### 服务器配置 - **端口**: 9999(可在`index.js`中修改) - **静态资源**: `/uploads` 目录映射到 `http://localhost:9999/uploads` ### 上传配置 - **分片大小**: 5MB(可在`utils/fileChunk.js`中修改) - **临时目录**: `uploads/.temp/` - **目标目录**: `uploads/[文件分类]/` ## 故障排除 ### 常见问题 1. **下载链接不生效** - 检查服务器是否正在运行 - 确认`uploads`目录是否正确配置为静态资源 2. **上传失败** - 检查文件格式是否支持 - 确认文件大小是否超过服务器限制 - 查看浏览器控制台的错误信息 3. **进度条异常** - 尝试刷新页面后重新上传 - 检查网络连接是否稳定 ## 版本历史 - v1.0.0 (2026-01-08) - 初始版本 - 支持分片上传和普通上传 - 实现文件分类存储 - 添加下载功能 - 实现进度显示和状态提示 ## 许可证 MIT License ## 贡献 欢迎提交Issue和Pull Request来帮助改进这个项目! --- **开发团队**: 病理数据管理系统开发组 **联系方式**: [np2368235544@gmail.com] **更新时间**: 2026-01-08