一种基于http加速文件上传的方法及系统
技术领域
1.本发明涉及web应用领域,具体提供一种基于http加速文件上传的方法及系统。
背景技术:2.传统的基于web表单文件上传方式,在web领域应用非常广泛,但是在https连接的场景下,由于要对请求体进行加密,导致上传文件请求时间变长。
技术实现要素:3.本发明是针对上述现有技术的不足,提供一种实用性强的基于http加速文件上传的方法;
4.本发明进一步的技术任务是提供一种设计合理,安全适用的基于http加速文件上传的系统。
5.本发明解决其技术问题所采用的技术方案是:
6.一种基于http加速文件上传的方法,具有如下步骤:
7.s1、前端拆分待上传的文件,根据拆分数量,发起并发请求;
8.s2、后端首次接收多并发请求中的一个;
9.s3、后端接收多并发请求的其他请求;
10.s4、后端全部接收;
11.s5、读取成功保存文件数据响应内容,上传结果。
12.进一步的,在步骤s1中,前端拆分待上传的文件,根据拆分数量,发起并发请求,每个请求携带分块后的文件信息和必要的补充信息——reqid表示为本次文件上传的唯一编码,totalpackages表示拆分数量。
13.进一步的,在步骤s2中,后端首次接收多并发请求中的一个,将接收到的请求体文件内容部分存入session中,属性名为请求头的reqid,属性值为一个map对象reqinfo,其含属性packages为已经收到的数据和packagenum为当前收到数据的总包数,此时等于1。
14.进一步的,在步骤s3中,后端接收多并发请求的其他请求,将请求体文件切片数据放入packages中,将packagenum加1。
15.进一步的,在步骤s4中,后端在全部接收之后,将session中缓存的packages数据全部取出,按顺序组织好文件数据,然后执行文件上传的业务逻辑,响应给客户端文件上传成功之后的文件id,最后清理session缓存的本次请求数据。
16.进一步的,在步骤s5中,在后台接收的过程中,每次接收到请求之后都有加锁,并在本次逻辑处理结束时释放锁,前端接收服务端响应,读取成功保存文件数据的响应的内容为本次文件上传的结果,执行后续逻辑。
17.一种基于http加速文件上传的系统,前端拆分待上传的文件,根据拆分数量,发起并发请求,后端首先进行首次接收,将接收到的请求体文件内容部分存入session中;
18.然后部分接收,将请求体文件切片数据放入packages中,再是全部接收完成;
19.最后,读取成功保存文件数据响应内容,上传结果。
20.进一步的,发起并发请求时,每个请求携带分块后的文件信息和必要的补充信息——reqid表示为本次文件上传的唯一编码,totalpackages表示拆分数量。
21.进一步的,后端首次接收多并发请求中的一个,将接收到的请求体文件内容部分存入session中,属性名为请求头的reqid,属性值为一个map对象reqinfo,其含属性packages为已经收到的数据和packagenum为当前收到数据的总包数,此时等于1;
22.部分接收,此时需要将请求体文件切片数据放入packages中,将packagenum加1;
23.全部接收完成,此时packagenum+1等于请求头中的totalpackages,此时将session中缓存的packages数据全部取出,按顺序组织好文件数据,然后执行文件上传的业务逻辑,响应给客户端文件上传成功之后的文件id,最后清理session缓存的本次请求数据。
24.进一步的,在后台接收的过程中,每次接收到请求之后,都要加锁,并在本次逻辑处理结束时释放锁,前端接收服务端响应,读取成功保存文件数据的响应的内容为本次文件上传的结果,执行后续逻辑。
25.本发明的一种基于http加速文件上传的方法及系统和现有技术相比,具有以下突出的有益效果:
26.本发明通过以上拆分合并过程,实现了https环境下文件上传的加速。根据拆分请求体块数的多少,加速效果不同,在实际生产环境中,分块数设置为5的情况下,速度提升约4-6倍。
附图说明
27.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
28.附图1是一种基于http加速文件上传的方法中前端拆分示意图;
29.附图2是一种基于http加速文件上传的方法中后端接收示意图。
具体实施方式
30.为了使本技术领域的人员更好的理解本发明的方案,下面结合具体的实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例都属于本发明保护的范围。
31.下面给出一个最佳实施例:
32.如图1和图2所示,本实施例中的一种基于http加速文件上传的方法,具有如下步骤:
33.s1、前端拆分待上传的文件,根据拆分数量,发起并发请求;
34.前端拆分待上传的文件,根据拆分数量,发起并发请求,每个请求携带分块后的文件信息和必要的补充信息——reqid表示为本次文件上传的唯一编码,totalpackages表示
拆分数量。
35.s2、后端首次接收多并发请求中的一个;
36.后端首次接收多并发请求中的一个,将接收到的请求体文件内容部分存入session中,属性名为请求头的reqid,属性值为一个map对象reqinfo,其含属性packages为已经收到的数据和packagenum为当前收到数据的总包数,此时等于1。
37.s3、后端接收多并发请求的其他请求;
38.后端接收多并发请求的其他请求,将请求体文件切片数据放入packages中,将packagenum加1。
39.s4、后端全部接收;
40.后端在全部接收之后,将session中缓存的packages数据全部取出,按顺序组织好文件数据,然后执行文件上传的业务逻辑,响应给客户端文件上传成功之后的文件id,最后清理session缓存的本次请求数据。
41.s5、读取成功保存文件数据响应内容,上传结果;
42.在后台接收的过程中,由于是并发执行,存在线程安全问题,所以在每次接收到请求之后,都要加锁,防止同时接收并处理两个请求时,两个线程同时操作缓存在session中的packagenum导致的数据不一致问题,并在本次逻辑处理结束时释放锁。前端接收服务端响应,读取成功保存文件数据的那一次响应的内容为本次文件上传的结果,执行后续逻辑。
43.至此,实现了https连接场景下文件上传的加速。
44.基于上述方法,本实施例中的一种基于http加速文件上传的系统,前端对要发送的请求体进行拆分,一般拆分数量为浏览器可支持的同一域名下最大并发连接数,发送http请求体时,添加携带文件分块信息,信息内容json格式为{"reqid":"文件本次上传对应的唯一id","totalpackages":"分块总数","formdata":"文件当前分块内容"}。
45.改造后台服务,对前端的请求进行接收处理,接收分三种状态:
46.第一种是首次接收,此时需要将接收到的请求体文件内容部分存入session中,属性名为请求头的reqid,属性值为一个map对象reqinfo,其含属性packages为已经收到的数据和packagenum为当前收到数据的总包数,此时等于1。
47.第二种状态是部分接收,此时需要将请求体文件切片数据放入packages中,将packagenum加1。
48.第三种状态是全部接收完成,此时packagenum+1等于请求头中的totalpackages,此时将session中缓存的packages数据全部取出,按顺序组织好文件数据,然后执行文件上传的业务逻辑,响应给客户端文件上传成功之后的文件id,最后清理session缓存的本次请求数据。
49.在后台接收的过程中,由于是并发执行,存在线程安全问题,所以在每次接收到请求之后,都要加锁,防止同时接收并处理两个请求时,两个线程同时操作缓存在session中的packagenum导致的数据不一致问题,并在本次逻辑处理结束时释放锁。前端接收服务端响应,读取成功保存文件数据的那一次响应的内容为本次文件上传的结果,执行后续逻辑。
50.上述具体的实施方式仅是本发明具体的个案,本发明的专利保护范围包括但不限于上述具体的实施方式,任何符合本发明的一种基于http加速文件上传的方法及系统权利要求书的且任何所述技术领域普通技术人员对其做出的适当变化或者替换,皆应落入本发
明的专利保护范围。
51.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
技术特征:1.一种基于http加速文件上传的方法,其特征在于,具有如下步骤:s1、前端拆分待上传的文件,根据拆分数量,发起并发请求;s2、后端首次接收多并发请求中的一个;s3、后端接收多并发请求的其他请求;s4、后端全部接收;s5、读取成功保存文件数据响应内容,上传结果。2.根据权利要求1所述的一种基于http加速文件上传的方法,其特征在于,在步骤s1中,前端拆分待上传的文件,根据拆分数量,发起并发请求,每个请求携带分块后的文件信息和必要的补充信息——reqid表示为本次文件上传的唯一编码,totalpackages表示拆分数量。3.根据权利要求1或2所述的一种基于http加速文件上传的方法,其特征在于,在步骤s2中,后端首次接收多并发请求中的一个,将接收到的请求体文件内容部分存入session中,属性名为请求头的reqid,属性值为一个map对象reqinfo,其含属性packages为已经收到的数据和packagenum为当前收到数据的总包数,此时等于1。4.根据权利要求3所述的一种基于http加速文件上传的方法,其特征在于,在步骤s3中,后端接收多并发请求的其他请求,将请求体文件切片数据放入packages中,将packagenum加1。5.根据权利要求3所述的一种基于http加速文件上传的方法,其特征在于,在步骤s4中,后端在全部接收之后,将session中缓存的packages数据全部取出,按顺序组织好文件数据,然后执行文件上传的业务逻辑,响应给客户端文件上传成功之后的文件id,最后清理session缓存的本次请求数据。6.根据权利要求3所述的一种基于http加速文件上传的方法,其特征在于,在步骤s5中,在后台接收的过程中,每次接收到请求之后都有加锁,并在本次逻辑处理结束时释放锁,前端接收服务端响应,读取成功保存文件数据的响应的内容为本次文件上传的结果,执行后续逻辑。7.一种基于http加速文件上传的系统,其特征在于,前端拆分待上传的文件,根据拆分数量,发起并发请求,后端首先进行首次接收,将接收到的请求体文件内容部分存入session中;然后部分接收,将请求体文件切片数据放入packages中,再是全部接收完成;最后,读取成功保存文件数据响应内容,上传结果。8.根据权利要求7所述的一种基于http加速文件上传的系统,其特征在于,发起并发请求时,每个请求携带分块后的文件信息和必要的补充信息——reqid表示为本次文件上传的唯一编码,totalpackages表示拆分数量。9.根据权利要求8所述的一种基于http加速文件上传的系统,其特征在于,后端首次接收多并发请求中的一个,将接收到的请求体文件内容部分存入session中,属性名为请求头的reqid,属性值为一个map对象reqinfo,其含属性packages为已经收到的数据和packagenum为当前收到数据的总包数,此时等于1;部分接收,此时需要将请求体文件切片数据放入packages中,将packagenum加1;全部接收完成,此时packagenum+1等于请求头中的totalpackages,此时将session中
缓存的packages数据全部取出,按顺序组织好文件数据,然后执行文件上传的业务逻辑,响应给客户端文件上传成功之后的文件id,最后清理session缓存的本次请求数据。10.根据权利要求9所述的一种基于http加速文件上传的系统,其特征在于,在后台接收的过程中,每次接收到请求之后,都要加锁,并在本次逻辑处理结束时释放锁,前端接收服务端响应,读取成功保存文件数据的响应的内容为本次文件上传的结果,执行后续逻辑。
技术总结本发明涉及web应用领域,具体提供了一种基于HTTP加速文件上传的方法,具有如下步骤:S1、前端拆分待上传的文件,根据拆分数量,发起并发请求;S2、后端首次接收多并发请求中的一个;S3、后端接收多并发请求的其他请求;S4、后端全部接收;S5、读取成功保存文件数据响应内容,上传结果。与现有技术相比,本发明通过以上拆分合并过程,实现了https环境下文件上传的加速。加速。加速。
技术研发人员:张文杰 林大伟 黄睿 王乃永
受保护的技术使用者:浪潮软件股份有限公司
技术研发日:2022.07.18
技术公布日:2022/11/1