Spring Boot 优雅处理大文件上传:分片 + 断点续传 + 秒传
引言 "产品经理上传一个 2GB 的安装包,进度条爬到 92% 时网络闪断,浏览器弹了个'上传失败'——一切从头再来。第三次传到 80% 时,Tomcat 那边先 OOM 了。" 这个事故里其实藏着三层问题:普通 multipart 上传把整个文件吃进服务器内存/临时目录,2GB 文件等于让每个请求都背着一颗内存炸弹;HTTP 是无状态的,传了 92% 断开,服务端对'已经收到多少'毫无记忆,重传只能从零开始;同一个安装包团队里十个人各传一遍,服务器接收了十遍完全相同的 2GB 字节。 对应的三个解法已经是行业标配:分片上传把大文件切成 5MB 小块逐个传,单次请求小、失败只需重传一块;断点续传用 Redis 记录已上传分片,重连后只传缺口;秒传在上传前先拿文件 MD5 问服务端"这个文件是不是已经有了",有就直接返回成功,一个字节都不用传。这篇文章给出从前端 File.slice 到后端合并落盘的完整实现:前端 TS + Axios 并发池,后端 Spring Boot + Redis 分片状态 + FileChannel 零内存合并,文末再讲生产环境演进到 OSS/S3 原生分片时....