一种基于Java技术实现大文件上传的改进方法与流程

文档序号:37044799发布日期:2024-02-20 20:39阅读:16来源:国知局
一种基于Java技术实现大文件上传的改进方法与流程

本发明涉及it与软件开发,具体为一种基于java技术实现大文件上传的改进方法。


背景技术:

1、在有些业务中,大文件上传是一种必不可少的交互场景,但在页面上传大文件,由于带宽问题,往往需要等待很长时间,而且用户不能刷新当前正在上传的界面。受http协议的影响,大文件上传也很容易造成连接超时的异常,用户体验很不友好。


技术实现思路

1、(一)解决的技术问题

2、针对现有技术的不足,本发明提供了一种基于java技术实现大文件上传的改进方法,具备与底层存储解耦、做到切片重复利用,大大节省存储空间,提升了上传效率等优点,解决了上述技术问题。

3、(二)技术方案

4、为实现上述目的,本发明提供如下技术方案:一种基于java技术实现大文件上传的改进方法,包括以下步骤:

5、s1、前端计算文件md5值,并把文件md5值与文件大小向后台服务发起http请求,询问文件的上传信息;

6、s2、服务器保存文件md5与自身文件库表的关联关系,并根据策略动态计算切片的大小,查找文件切片的已上传列表,返回给前端;

7、s3、前端按后台返回的切片大小对文件进行切片;

8、s4、前端开启多线程,并对切片进行校验和上传;

9、s5、后台向第三方文件管理系统存储切片,并保存切片与第三方文件管理系统对该切片的访问方式的关联关系;

10、s6、前端计算上传进度,并在页面进行渲染。

11、作为本发明的优选技术方案,所述步骤s1中的过程具体如下:

12、s1.1、前端读取用户所选文件的数据,并对其md5值进行计算;

13、s1.2、前端将计算md5与后台服务器中的数据进行对比;

14、s1.3、后台服务器根据比对结果来判断是否进行下载;

15、s1.4、若后台服务器中已经存在数据,则直接结束流程,若未存在数据,则执行s1.5;

16、s1.5、后台服务器返回文件标识、切片大小和已传切片列表参数。

17、作为本发明的优选技术方案,所述步骤s2的具体过程如下:

18、s2.1、后台服务器接收到前端的md5后,根据md5在后台服务器内部的t file表中进行查找;

19、s2.2、判断t file表中是否已经存在相同的md5值,若存在执行步骤s2.3,若不存在则执行步骤s2.5;

20、s2.3、通过后台服务器中的t_file_chunk与切片的关联中间表,查找文件的切片列表,计算切片的总大小是否与前端文件大小参数相等,如已相等,则进入步骤s2.4;

21、s2.4、返回t_file表的主键标识,进入步骤s2.7;

22、s2.5、根据前端的md5值和文件参数幂向t_file表内部插入对于该md5值和文件参数幂信息的一条记录,并进入步骤s2.6;

23、s2.6、向前端返回t_file表标识,以及切片大小已传切片列表;

24、s2.7、结束流程。

25、作为本发明的优选技术方案,所述步骤s3中的切片切分的过程如下:

26、s3.1、根据后台返回的切片大小,计算出需要切分成多少个切片,切片个数为总字节数除以切片大小;

27、s3.2、在文件被读取后按照计算的切片数量,对文件进行切片;

28、s3.3、对于每个切片,前端将其发送到后台进行处理。

29、作为本发明的优选技术方案,所述步骤s4中对切片多线程检验和上传的具体步骤如下:

30、s4.1、建立线程池,用于避免频繁地创建和销毁线程,同时也能控制线程的数量;

31、s4.2、每个切片进行格式校验,确保其符合导入限制;

32、s4.3、在线程池中,对每个切片进行独立的异步校验;

33、s4.4、所有切片都完成校验后,向后台服务器进行上传。

34、作为本发明的优选技术方案,所述步骤s5的上传过程如下:

35、s5.1、后端接收数据并转存到第三方系统;

36、s5.2、根据md5值、切片大小,切片在第三方文件管理系统的访问参数幂向t_chunk插入记录;

37、s5.3、返回切片上传成功的标志给前端;

38、s5.4、结束流程。

39、作为本发明的优选技术方案,所述步骤s5.1的具体流程如下:

40、s5.1.1、后端使用相应的框架或库来接收前端发送的请求;

41、s5.1.2、调用第三方api,通过调用第三方系统的api,将处理后的数据发送给第三方系统。

42、作为本发明的优选技术方案,所述步骤s5.2的具体流程如下:

43、s5.2.1、第三方系统确定要插入的列名和对应的值;

44、s5.2.2、编写sql语句,将对于值进行插入;

45、s5.2.3、执行sql语句,将数据插入到t_chunk表中。

46、作为本发明的优选技术方案,所述步骤s5.3的具体流程如下:

47、s5.3.1、第三方系统会生成一个表示上传成功的标识符,并将该标识符传递给后端;

48、s5.3.2、后端在接收到标识符后,计算上传剩余时间,并将该切片上传成功的标识符发送给前端。

49、作为本发明的优选技术方案,所述步骤s6的具体流程如下:

50、s6.1、创建一个进度条元素;

51、s6.2、时刻监听来自后端的标识符;

52、s6.3、在前端接收到标识符后,对进度条进行更新。

53、与现有技术相比,本发明提供了一种基于java技术实现大文件上传的改进方法,具备以下有益效果:

54、1、本发明通过切片的重复利用:对于不同文件的相同切片也同样可以重复利用,无需重复上传,节省存储空间,减少上传时间,这对于需要频繁修改文件但改动范围较小的情况下效果非常显著,并且对于文件的存储和读取,由第三方文件系统提供能力接口,迁移、升级和伸缩性、可用性能得到一定的保障。

55、2、本发明通过保存着文件与切片的关联关系,无需合并切片即可按切片序列按字节数据返回给调用方,而目前技术需要上传完成后由前端发起合并的请求,在合并的过程中存在宕机导致合并不完整的情况,也存在切片与完整文件的冗余数据,造成存储空间的浪费。



技术特征:

1.一种基于java技术实现大文件上传的改进方法,其特征在于:包括以下步骤:

2.根据权利要求1所述的一种基于java技术实现大文件上传的改进方法,其特征在于:所述步骤s1中的过程具体如下:

3.根据权利要求2所述的一种基于java技术实现大文件上传的改进方法,其特征在于:所述步骤s2的具体过程如下:

4.根据权利要求1所述的一种基于java技术实现大文件上传的改进方法,其特征在于:所述步骤s3中的切片切分的过程如下:

5.根据权利要求4所述的一种基于java技术实现大文件上传的改进方法,其特征在于:所述步骤s4中对切片多线程检验和上传的具体步骤如下:

6.根据权利要求1所述的一种基于java技术实现大文件上传的改进方法,其特征在于:所述步骤s5的上传过程如下:

7.根据权利要求6所述的一种基于java技术实现大文件上传的改进方法,其特征在于:所述步骤s5.1的具体流程如下:

8.根据权利要求7所述的一种基于java技术实现大文件上传的改进方法,其特征在于:所述步骤s5.2的具体流程如下:

9.根据权利要求6所述的一种基于java技术实现大文件上传的改进方法,其特征在于:所述步骤s5.3的具体流程如下:

10.根据权利要求9所述的一种基于java技术实现大文件上传的改进方法,其特征在于:所述步骤s6的具体流程如下:


技术总结
本发明涉及IT与软件开发技术领域,且公开了一种基于Java技术实现大文件上传的改进方法包括以下步骤前端计算文件MD5值,并把文件MD5值与文件大小向后台服务发起http请求,询问文件的上传信息,服务器保存文件MD5与自身文件库表的关联关系,后台保存切片与第三方文件管理系统对该切片的访问方式的关联关系。该基于Java技术实现大文件上传的改进方法通过切片的重复利用,对于不同文件的相同切片也同样可以重复利用,无需重复上传,节省存储空间,减少上传时间,并且对于文件的存储和读取,由第三方文件系统提供能力接口,迁移、升级和伸缩性、可用性能得到一定的保障。

技术研发人员:洪水能,邓志强,邓龙亮,浣浩,卢龙涛,王斐瀚
受保护的技术使用者:天翼云科技有限公司
技术研发日:
技术公布日:2024/2/19
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1