1. 项目背景与核心挑战
在机械制造行业的数字化进程中,文件传输是生产数据流转的关键环节。我们经常遇到这样的场景:设计部门需要将数百MB甚至GB级别的3D模型文件传输到车间终端,质量部门需要回传高精度检测数据,这些操作往往在局域网环境下进行。传统FTP或共享文件夹方式在面对大文件传输时,经常因网络波动、设备重启等问题导致传输中断,而重新传输既浪费时间又影响生产效率。
WebUploader作为浏览器端文件上传解决方案,其断点续传功能在公网环境已有成熟应用。但在局域网这一特殊环境下,我们需要解决三个核心问题:
- 如何在没有公网云存储的情况下实现分片文件的临时存储
- 如何确保传输中断后能准确识别已上传分片
- 如何优化传输效率以适应机械制造行业特有的文件类型(如CAD图纸、CAM程序等)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术方案设计
2.1 系统架构设计
我们采用前后端分离架构:
code复制[浏览器] --(分片上传)--> [Nginx反向代理] --> [SpringBoot服务]
↑
[Redis] ←(存储元数据)--- [MySQL]
关键组件说明:
- 前端:基于WebUploader改造,增加局域网环境检测模块
- 传输层:Nginx配置client_max_body_size=0取消大小限制
- 服务端:采用分片合并策略而非实时合并,降低IO压力
2.2 断点续传实现原理
-
文件分片:
- 计算公式:
分片大小 = min(文件大小/10, 50MB) - 示例:800MB文件 → 16个50MB分片
- 机械行业特化:对.stp/.iges等格式优先按结构树分片
- 计算公式:
-
分片标识:
java复制// 使用文件内容hash+分片索引生成唯一ID String chunkId = DigestUtils.md5Hex(file.getInputStream()) + "_" + chunkIndex; -
续传检测:
sql复制SELECT chunk_index FROM upload_chunks WHERE file_md5=? AND
