目录

前端大文件上传优化方案分片上传

目录

前端大文件上传优化方案——分片上传

前端大文件上传优化方案——分片上传,前端大文件分片上传,前端大文件切片上传,前端大文件分块上传,前端大文件加密上传,前端文件夹上传,前端大文件分片上传解决方案,前端大文件分片上传思路,前端大文件分片上传源码,前端大文件分片上传实例,

要求操作便利,一次选择多个文件和文件夹进行上传;

支持PC端全平台操作系统,Windows,Linux,Mac

支持文件和文件夹的批量下载,断点续传。刷新页面后继续传输。关闭浏览器后保留进度信息。

支持文件夹批量上传下载,服务器端保留文件夹层级结构,服务器端文件夹层级结构与本地相同。

支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验;

支持文件夹上传,文件夹中的文件数量达到1万个以上,且包含层级结构。

支持断点续传,关闭浏览器或刷新浏览器后仍然能够保留进度。

支持文件夹结构管理,支持新建文件夹,支持文件夹目录导航

交互友好,能够及时反馈上传的进度;

服务端的安全性,不因上传文件功能导致JVM内存溢出影响其他功能使用;

最大限度利用网络上行带宽,提高上传速度;

对于大文件的处理,无论是用户端还是服务端,如果一次性进行读取发送、接收都是不可取,很容易导致内存问题。所以对于大文件上传,采用切块分段上传

从上传的效率来看,利用多线程并发上传能够达到最大效率。

该项目核心就是文件分块上传。前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题。

* 如何分片;

* 如何合成一个文件;

* 中断了从哪个分片开始。

如何分,利用强大的js库,来减轻我们的工作,市场上已经能有关于大文件分块的轮子,虽然程序员的天性曾迫使我重新造轮子。但是因为时间的关系还有工作的关系,我只能罢休了。最后我选择了百度的WebUploader来实现前端所需。

如何合,在合之前,我们还得先解决一个问题,我们如何区分分块所属那个文件的。刚开始的时候,我是采用了前端生成了唯一uuid来做文件的标志,在每个分片请求上带上。不过后来在做秒传的时候我放弃了,采用了Md5来维护分块和文件关系。

在服务端合并文件,和记录分块的问题,在这方面其实行业已经给了很好的解决方案了。参考迅雷,你会发现,每次下载中的时候,都会有两个文件,一个文件主体,另外一个就是文件临时文件,临时文件存储着每个分块对应字节位的状态。

这些都是需要前后端密切联系才能做好,前端需要根据固定大小对文件进行分片,并且请求中要带上分片序号和大小。前端发送请求顺利到达后台后,服务器只需要按照请求数据中给的分片序号和每片分块大小(分片大小是固定且一样的)算出开始位置,与读取到的文件片段数据,写入文件即可。

为了便于开发,我 将服务端的业务逻辑进行了如下划分,分成初始化,块处理,文件上传完毕等。

1.下载示例

https://i-blog.csdnimg.cn/blog_migrate/b7d6b3ed07523b1b2be4eaeaa918de6a.jpeg

将up6组件复制到项目中

示例中已经包含此目录

https://i-blog.csdnimg.cn/blog_migrate/172c2ce7d360be573424de9b7c928652.jpeg

1.引入up6组件

https://i-blog.csdnimg.cn/blog_migrate/e1fb726a77e725a13eff1ac725acbde0.jpeg

2.配置接口地址

接口地址分别对应:文件初始化,文件数据上传,文件进度,文件上传完毕,文件删除,文件夹初始化,文件夹删除,文件列表

参考:http://www.ncmem.com/doc/view.aspx?id=e1f49f3e1d4742e19135e00bd41fa3de

https://i-blog.csdnimg.cn/blog_migrate/de0e1a2bdcfdbce6d2c0a897a95d8e66.jpeg

3.处理事件

https://i-blog.csdnimg.cn/blog_migrate/36da22fbda73f4229834e021bd31f278.jpeg

启动测试

https://i-blog.csdnimg.cn/blog_migrate/3516fcc8753fd4e8234a3fc83f806153.jpeg

启动成功

https://i-blog.csdnimg.cn/blog_migrate/79deffb4bdec86b12374c1a90f94bca0.jpeg

效果

https://i-blog.csdnimg.cn/blog_migrate/3eb8ed83c090ad92e5ead0d9401520c4.jpeg

数据库

https://i-blog.csdnimg.cn/blog_migrate/c4f4fea98c027d3643bc7dce6890e5b6.jpeg

源码工程文档:

源码报价单:

OEM版报价单:

产品源代码:

授权码生成器: