一种文件下载完成后回调的方法与流程

文档序号:19059680发布日期:2019-11-06 01:39阅读:1757来源:国知局
一种文件下载完成后回调的方法与流程

本发明属于web服务应用技术领域,具体涉及一种文件下载完成后回调的方法。



背景技术:

在web应用中经常会用到文件下载的功能,也常常会有文件下载完成后触发一些事件的需求,这里将其简称为“文件下载完成后的回调”,比如下载文件完成后给用户适当提示、下载文件完成后页面需要动态刷新某个区域、文件下载完成后需要立刻进入到下一个重要的处理流程。但ecmascript标准中并没有提供文件数据通过服务器传输给浏览器保存后的回调接口,因此开发人员不可以在文件下载完成后直接执行自己添加的代码逻辑。

当前针对以上下载后回调需求的方法有:

(1)ajax直接请求二进制数据,在ajax本身的回调函数中将返回的二进制数据关联到html的“a”标签中;关联完成后执行自定义回调函数;最后通过触发a标签事件下载文件。优点:完全使用ajax无刷新异步的特点实现,请求过程很简单。缺点:无法处理体积大的文件;效率低;无法做到浏览器将文件保存完成后执行回调,仅能做到在文件开始下载时回调。

(2)通过前台ajax先发送一个请求,请求服务器生成文件存于指定位置,返回文件地址;返回时便执行开发人员自己指定的回调函数;最后发送一个表单请求,下载指定地址的文件。优点:实现方式简单。缺点:整个流程被分割为先存储、后下载;准备下载的文件必须按照其规定位置存放,对后台开发有一定限制;无法做到浏览器将文件保存完成后执行回调,仅能做到在文件开始下载时回调。

上述方法中,仅能控制文件形成与回调的顺序却无法实现下载与回调的处理顺序,对于下载完成与后续处理有顺序要求的业务,无法保证业务逻辑正确性。



技术实现要素:

本发明的主要目的在于提供一种文件下载完成后回调的方法,旨在解决既有方法中存在的以上技术问题。

为实现上述目的,本发明提供一种文件下载完成后回调的方法,包括以下步骤:

s1、利用客户端创建文件下载请求和回调请求,生成本次请求对应的唯一标识参数,将装载唯一标识参数的文件下载请求和回调请求同时发送至服务器;

s2、利用服务器中的拦截器拦截客户端发送的各种请求,并利用过滤器对请求进行过滤,得到带有唯一标识参数的请求并进行处理;

s3、利用服务器将回调请求返回至客户端,并利用客户端执行回调过程,完成文件下载和回调过程。

进一步地,所述步骤s1具体包括以下步骤:

s11、利用客户端在发送请求时生成本次请求对应的唯一标识参数;

s12、利用客户端创建主请求和辅助请求,其中主请求为form表单数据文件下载请求,辅助请求为具有回调功能的ajax请求;将主请求和辅助请求分别装载本次请求生成的唯一标识参数,对请求进行标记;

s13、利用客户端将步骤s12标记后的主请求和辅助请求同时发送至服务器。

进一步地,所述步骤s2具体包括以下步骤:

s21、利用服务器中的拦截器拦截客户端发送的各种请求,并利用过滤器对请求进行过滤,提取得到带有唯一标识参数的请求;

s22、当获取得到两个带有相同唯一标识的请求后,首先处理主请求进行数据获取和文件下载,再处理辅助请求。

进一步地,所述步骤s22具体包括以下步骤:

s221、利用服务器中的拦截器拦截到第一个带有唯一标识参数的请求r1后,将请求r1的状态设置为等待状态;

s222、利用服务器中的拦截器继续拦截请求,并利用过滤器对请求进行过滤,提取得到带有相同唯一标识参数的请求r2;

s223、判断请求r2是否为主请求;若是,即请求r2为主请求,请求r1为辅助请求,则执行步骤s224;若否,即请求r2为辅助请求,请求r1为主请求,则执行步骤s225;

s224、利用服务器对主请求进行处理,获取二进制流数据,发送给客户端生成文件下载;主请求处理完成后即执行步骤s226;

s225、唤醒等待状态中的主请求,并将辅助请求设置为等待状态,执行步骤s224;

s226、唤醒等待状态中的辅助请求,处理辅助请求。

本发明的有益效果是:本发明通过客户端将form表单请求和ajax请求同时发送至服务器,并在服务器端通过线程同步的方式保证ajax请求晚于form请求完成,使得开发人员能轻松实现在文件下载完成之后设置回调,从而提升相关业务的用户体检。

附图说明

图1是本发明的文件下载完成后回调的方法流程示意图;

图2是本发明中步骤s1的处理流程示意图;

图3是本发明中步骤s2的处理流程示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本发明实施例的主要解决方案是:

如图1所示,一种文件下载完成后回调的方法,包括以下步骤:

s1、利用客户端创建文件下载请求和回调请求,生成本次请求对应的唯一标识参数,将装载唯一标识参数的文件下载请求和回调请求同时发送至服务器;

s2、利用服务器中的拦截器拦截客户端发送的各种请求,并利用过滤器对请求进行过滤,得到带有唯一标识参数的请求并进行处理;

s3、利用服务器将回调请求返回至客户端,并利用客户端执行回调过程,完成文件下载和回调过程。

本发明利用form提交表单方式实现文件下载,利用ajax请求方式实现请求回调,通过form提交与ajax请求同时进行,并在服务器端通过线程同步的方式保证ajax请求晚于form请求完成以实现文件下载完成后执行回调。

在本发明的一个可选实施例中,上述步骤s1首先利用客户端,例如各类浏览器等访问web应用,创建文件下载请求和回调请求,生成本次请求对应的唯一标识参数,将装载唯一标识参数的文件下载请求和回调请求同时发送至服务器。

如图2所示,上述步骤s1具体包括以下步骤:

s11、利用客户端在发送请求时生成本次请求对应的唯一标识download_specific_id参数;

s12、利用客户端创建两个请求,即主请求和辅助请求,其中主请求为form表单数据文件下载请求,辅助请求为具有回调功能的ajax请求,回调包括但不限于返回、刷新页面等操作;将主请求和辅助请求分别装载本次请求生成的唯一标识download_specific_id参数对请求进行标记;

s13、利用客户端将步骤s12标记后的主请求和辅助请求同时发送至服务器。

在本发明的一个可选实施例中,上述步骤s2利用服务器中的拦截器拦截客户端发送的各种请求,并利用过滤器对拦截的请求进行过滤,得到带有唯一标识download_specific_id参数的请求并进行处理。

如图3所示,上述步骤s2具体包括以下步骤:

s21、利用服务器中的拦截器拦截客户端发送的各种请求,并利用过滤器对拦截的请求进行过滤,提取得到带有唯一标识download_specific_id参数的请求;

s22、一个唯一标识download_specific_id有且仅有两个对应的请求,当获取得到两个带有相同唯一标识download_specific_id的请求后,首先处理主请求进行数据获取和文件下载,处理完主请求后,再处理辅助请求。

上述步骤s22具体包括以下步骤:

s221、利用服务器中的拦截器拦截到第一个带有唯一标识参数的请求r1后,将请求r1的状态设置为等待状态;

在本实施例中,当从服务器session获取到第一个带有download_specific_id1参数的请求r1后,后台将请求r1的状态设置为等待状态。

s222、利用服务器中的拦截器继续拦截请求,并利用过滤器对请求进行过滤,提取得到带有相同唯一标识download_specific_id1参数的请求r2;

s223、判断请求r2是否为主请求;若是,即请求r2为主请求,请求r1为辅助请求,则执行步骤s224;若否,即请求r2为辅助请求,请求r1为主请求,则执行步骤s225;

s224、利用服务器对主请求进行处理,获取二进制流数据,发送给客户端,实现客户端生成文件下载;主请求处理完成后即执行步骤s226;

s225、唤醒等待状态中的主请求,并将辅助请求设置为等待状态,执行步骤s224;

s226、唤醒等待状态中的辅助请求,处理辅助请求。

在本发明的一个可选实施例中,上述步骤s3利用服务器将回调请求返回至客户端,并利用客户端执行回调过程,从而完成文件下载和回调的整个过程。

本发明通过客户端form表单请求结合ajax请求以及服务器端的线程同步技术,保证下载与回调事件的处理顺序正确,开发人员能轻松地在文件下载完成之后设置回调,提升相关业务的用户体检。

本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1