一种web端基于http的文件传输方法技术

技术编号:34568135 阅读:59 留言:0更新日期:2022-08-17 12:58
一种web端基于http的文件传输方法,包括以下步骤:步骤S1:前端获取文件上传后可提供文件解析的接口;步骤S2:调用接口,对文件进行分片处理,得到分片文件;使用WebWorker对分片文件进行加密,生成唯一标识;获取当前的并发数目,根据并发数目作为异步请求中每一组发送分片文件的数量;对将分片文件进行并发异步发送至后端;步骤S3:后端创建分片文件夹,并根据唯一标识对分片文件进行顺序排列;步骤S4:当前端的分片文件上传完毕后,向后端发送出合并请求;步骤S5:后端接收合并请求后,根据排列顺序对分片文件进行组合得到文件,本申请中使用能WebWorker对分片文件进行加密,WebWorker够独立与其他脚本,不会影响UI的数据交互,使得前台的UI还能正常运作。前台的UI还能正常运作。前台的UI还能正常运作。

【技术实现步骤摘要】
一种web端基于http的文件传输方法


[0001]专利技术涉及计算机文件传输
,特别是一种web端基于http的文件传输方法。

技术介绍

[0002]中国专利号CN201811583080.2,公开了一种文件的断点续传的方法:前端对待上传文件进行加密,获得文件唯一标识发送给后端;后端根据文件唯一标识查询数据库,若文件上传过,则直接返回文件信息给前端;前端根据自定义配置开始对待上传文件进行分片,获得分片文件;前端将分片文件上传给后端,并展示上传进度,若分片上传失败,则重新上传失败的分片;后端接收前端上传的分片文件,进行唯一标识验证,若验证失败,则返回上传文件失败信息给前端,若验证成功,则验证分片是否全部上传完毕,当全部分片上传完成后,按照分片排序组合文件,将完整文件保存在文件服务器,并返回完整文件信息给前端,并把完整文件信息保存在数据库。其可以节约时间、流量,节省存储空间。
[0003]但是上述方法可能存在以下弊端:1、考虑是大文件,分片文件生成唯一标识是十分的耗时的,会引起浏览器的UI阻塞。2、大分片文件标识计算后,有可能产生几十或几百次网络请求,造成网络请求并发问题。3、分片文件不当可能会造成TCP拥塞控制的问题。4、没有设置文件碎片清理,长时间使用可能会导致存储问题。所以针对现有的文件传输方法仍有巨大的改进空间来完善,使得文件在传输时更加的顺畅。

技术实现思路

[0004]针对上述缺陷,专利技术的目的在于提出一种web端基于http的文件传输方法以解决在文件传输中,遇到大文件而产生的浏览器的UI阻塞、耗时时间长、TCP拥塞控制等问题。
[0005]为达此目的,专利技术采用以下技术方案:一种web端基于http的文件传输方法,包括以下步骤:
[0006]步骤S1:前端获取文件上传后可提供文件解析的接口;
[0007]步骤S2:调用所述接口,对所述文件进行分片处理,得到分片文件;
[0008]使用Web Worker对分片文件进行加密,生成唯一标识;
[0009]获取当前的并发数目,根据所述并发数目作为异步请求中每一组发送分片文件的数量;
[0010]对将分片文件进行并发异步发送至后端;
[0011]步骤S3:后端创建分片文件夹,将接收所述分片文件存储在所述分片文件夹内,并根据所述唯一标识对分片文件进行顺序排列;
[0012]步骤S4:当前端的分片文件上传完毕后,向所述后端发送出合并请求;
[0013]步骤S5:后端接收所述合并请求后,根据排列顺序对分片文件进行组合得到所述文件。
[0014]优选的,所述步骤S2中对所述文件进行分片处理的具体步骤如下:
[0015]步骤S21:判断所述文件的大小是否大于第一文件阈值,若小于,则以TCP协议中接
收窗口的最大值作为每一份分片的大小,对所述文件进行分片处理;
[0016]步骤S22:若文件的大小是大于第一文件阈值,则以预设值作为首个分片文件的大小;
[0017]在使用TCP协议将文件发送至后端时增加TCP协议中接收窗口的数量;
[0018]以上一份分片文件的大小以及增加接收窗口的数量之和作为下一份分片文件的大小,直到分片文件大小达到第二文件阈值,停止增加TCP协议中接收窗口的数量。
[0019]优选的,若在步骤S2中,日志出现丢失事件,则将分片文件的大小调整为预设值。
[0020]优选的,所述步骤S2中对分片文件进行加密,生成具有唯一标识的加密件的具体步骤如下:
[0021]对任意长度的分片文件进行逐位计算,产生一个二进制长度为128位或十六进制长度为32位的hash值,以所述hash值作为唯一标识。
[0022]优选的,所述步骤S3的具体步骤如下:
[0023]创建临时的所述分片文件夹,或接收到的分片文件中的hash值,并将所述hash值至作为分片文件的文件名,存储在所述分片文件夹中,并根据所述hash值对分片文件进行排序。
[0024]优选的,步骤S5中的具体步骤如下:
[0025]所述合并请求中包含有所述hash值;
[0026]后端解析所述合并请求,获取所述hash值,并根据所述hash值找到对应分片文件的文件名;
[0027]创建一个可写流,其中所述可写流的文件名由分片文件的文件名+后缀名组合而成,遍历整个分片文件夹,将同一个分片文件夹内的所述分片文件顺序调用所述可写流组合形成所述文件。
[0028]优选的,若步骤S5中,所述hash值找不到对应分片文件的文件名,则通知所述前端再次发送所述hash值所对应的分片文件。
[0029]优选的,若步骤S5中出现合并失败,则自动重新合并,直到重新合并的次数到达次数阈值,则停止分片文件的合并。
[0030]优选的,前端记录每一个分片文件的生成时间,并在每天的规定时间段内扫描分片文件并获取其生成时间,若分片文件生成时间与现时间之间的时间差超过时间阈值,则删除该分片文件。
[0031]上述技术方案中的一个技术方案具有如下优点或有益效果:1.本申请中使用能Web Worker对分片文件进行加密,Web Worker够独立与其他脚本,不会影响页面的性能。当有大量的分片文件需要加密时,会将分片文件传输至后台的Web Worker中进行,不会影响UI的数据交互,使得前台的UI还能正常运作。
[0032]2.采用异步请求的传输方式对每一组请求进行发送,能够避免线程堵塞,传输的用时相对较短,减少了网络请求的次数,另外该方式无需等待接口的返回后再执行后面的逻辑,可直接继续自己的业务逻辑,减少了请求并发问题的发生概率。
附图说明
[0033]图1是专利技术的一个实施例的流程图。
[0034]图2是专利技术的一个实施例中对文件进行分片的流程图。
[0035]图3是专利技术的一个实施例中分片文件的名称示意图。
具体实施方式
[0036]下面详细描述专利技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释专利技术,而不能理解为对专利技术的限制。
[0037]在专利技术的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述专利技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对专利技术的限制。
[0038]此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在专利技术的描述中,除非另有说明,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种web端基于http的文件传输方法,其特征在于,包括以下步骤:步骤S1:前端获取文件上传后可提供文件解析的接口;步骤S2:调用所述接口,对所述文件进行分片处理,得到分片文件;使用Web Worker对分片文件进行加密,生成唯一标识;获取当前的并发数目,根据所述并发数目作为异步请求中每一组发送分片文件的数量;对将分片文件进行并发异步发送至后端;步骤S3:后端创建分片文件夹,将接收所述分片文件存储在所述分片文件夹内,并根据所述唯一标识对分片文件进行顺序排列;步骤S4:当前端的分片文件上传完毕后,向所述后端发送出合并请求;步骤S5:后端接收所述合并请求后,根据排列顺序对分片文件进行组合得到所述文件。2.根据权利要求1所述的一种web端基于http的文件传输方法,其特征在于,所述步骤S2中对所述文件进行分片处理的具体步骤如下:步骤S21:判断所述文件的大小是否大于第一文件阈值,若小于,则以TCP协议中接收窗口的最大值作为每一份分片的大小,对所述文件进行分片处理;步骤S22:若文件的大小是大于第一文件阈值,则以预设值作为首个分片文件的大小;在使用TCP协议将文件发送至后端时增加TCP协议中接收窗口的数量;以上一份分片文件的大小以及增加接收窗口的数量之和作为下一份分片文件的大小,直到分片文件大小达到第二文件阈值,停止增加TCP协议中接收窗口的数量。3.根据权利要求2所述的一种web端基于http的文件传输方法,其特征在于,若在步骤S2中,日志出现丢失事件,则将分片文件的大小调整为预设值。4.根据权利要求2所述的一种web端基于http的文件传输方法,其特征在于,所述步骤S2中对分片文件进行加密,生成具有唯一标识...

【专利技术属性】
技术研发人员:张静良杨建州郭建成
申请(专利权)人:广东三维睿新科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1