JAVA实现大文件多线程上传,分片,分块,分段,分割,切割,断点续传。
大文件,文件大小可能是1G,10G,50G,100G。
核心要求就是两个,一个是快,一个是稳定。稳定,断点续传的话,不管是关闭网页,刷新页面,关闭浏览器,浏览器崩溃,重启浏览器,重启电脑,关闭电脑,这些情况发生后,仍然能够继续上传,也就是说上传的进度信息不能丢失,因为传的文件比较大,传的时间比较长,进度信息丢失的话,用户又要从新开始上传,这个是不能接受的。
要求多线程方式上传,一个文件用10个线程,每个线程上传一块,这样的话上传速度可以达到最大值。达到内网带宽上限,百兆的话12MB/S左右,千兆的话50MB/S左右。
文件比较大,有50G左右,用户希望能够在网页里面直接上传,一期的时候我们是直接用的HTML5的API,也就是chrome提供的API来做的,但是上线后用户反馈不是特别的好用,用户那边有些电脑用的是WIN7+IE9,chrome的API在ie9里面不支持。但是用户系统是支持的,这就把人整的有点不会了。二期的时候我们还是定制开发了,
前端用了JSP,VUE2,VUE3,后端用了JSP,SpringBoot,IDE用了Eclipse,MyEclipse,因为新项目和老项目都用了两种IDE。
用户要求能够在网页上面上传文件夹,文件夹里面大约有1万多个文件,有大有小,大的有1G~10G,小的有几MB,文件夹上传的时候需要保存层级结构,同时能够将层级结构信息保存到数据库中,同时还需要支持文件夹下载,下载下来的文件夹要和上传的文件夹层级结构一模一样。
要求支持断点续传,支持进度信息离线存储,用户可能传一半没有传完,下班了,明天上班后继续上传,电脑晚上到点需要关机,支持加密传输,支持国密加密算法SM4,要求支持下载,支持非打包方式下载,浏览器要求支持包含IE在内的所有浏览器,
系统环境要求支持信创国产化,比如银河麒麟,中标麒麟,统信UOS,龙芯,数据库支持MySQL,Oracle,达梦数据库,人大金仓,需要提供前端源码,后端源码,控件源码,公司自己的项目,也有自己的产品,后续需要集成使用,
要求提供7*24小时技术支持服务,提供文档教程,视频教程,远程技术指导,1对1技术支持服务,提供手机,微信,QQ,邮箱,企业微信等联系方式。
下载示例:
https://gitee.com/xproer/up6-jsp-eclipse/tree/6.5.40/
![](https://img-blog.csdnimg.cn/img_convert/f0176d12901e8c0b3567944677494740.jpeg)
工程
![](https://img-blog.csdnimg.cn/img_convert/2c674d84929e95a24603826c4fc15a3a.jpeg)
NOSQL
NOSQL示例不需要任何配置,可以直接访问测试
![](https://img-blog.csdnimg.cn/img_convert/93bb211f35de1652c82dbf585c1529a1.jpeg)
创建数据表
选择对应的数据表脚本,这里以SQL为例
![](https://img-blog.csdnimg.cn/img_convert/f023bf3bced2fd189cd1f4af7b5a4ef7.jpeg)
![](https://img-blog.csdnimg.cn/img_convert/af94f2e87cc06118575a407c7cbc20bc.jpeg)
修改数据库连接信息
访问页面进行测试
文件存储路径
up6/upload/年/月/日/guid/filename
相关问题:
1.javax.servlet.http.HttpServlet错误
2.项目无法发布到tomcat
3.md5计算完毕后卡住
4.服务器找不到config.json文件
相关参考: