支持不限制大小,大文件分段批量上传功能(不受nginx /apache 上传大小限制)
大文件分段批量上传功能 (Large File Chunked Upload)
项目简介
这是一个实现大文件分段批量上传功能的示例项目。该项目使用 Spring Boot 框架,支持将大文件分割为多个小块进行上传,并在服务器端进行合并。
技术重点是前端使用了html 的: file.size 、file.slice 、xhr progress 事件.
以及在不打包vue情况下使用vue.
后端使用spring boot .
项目背景
nginx/apache 等服务默认不支持大文件上传,虽然支持配置,但是如果上传文件过大会长期占用一个长连接以及网络带宽,所以在单点form post upload 下大部分项目都会做文件上传限制,所以就有这个分断上传一个功能
网络上也已经也有很多现成的成功的例子以及文章,这里仅做一个另一种解决方法,仅供参考.
功能特性
- 大文件分片上传:将大文件分成多个小块进行上传,避免一次性上传大文件导致的内存溢出或超时问题。
- 文件合并:服务器端接收所有分片后,自动将分片合并为完整文件。
- 上传进度跟踪:支持上传进度的实时跟踪。
- 断点续传:支持上传中断后从断点继续上传。
- 多文件批量上传:支持多个文件同时上传。
技术栈
- Java 11+
- Spring Boot 2.x
- Maven
- Vue.js (前端示例)
安装与使用
后端
- 确保已安装 JDK 11+ 和 Maven。
- 克隆项目到本地:
git clone https://github.com/pinke/upload-pro.git
- 进入项目目录并运行:
cd upload-pro mvn spring-boot:run
- 后端服务将启动在
http://localhost:8080/
。
前端
- 打开
http://localhost:8080/static/vue.html
文件。 - 在浏览器中打开该文件,即可使用上传功能。
API 文档
上传分片文件
- URL:
/api/upload
- 方法:
POST
- 请求体: 包含文件分片的
multipart/form-data
。
合并文件
- URL:
/api/merge
- 方法:
POST
- 请求参数: 文件标识符和分片总数。