[发明专利]一种文件下载完成后回调的方法有效
申请号: | 201910728696.2 | 申请日: | 2019-08-08 |
公开(公告)号: | CN110417912B | 公开(公告)日: | 2022-01-28 |
发明(设计)人: | 唐力;徐向茹;彭森;王贺;王定平 | 申请(专利权)人: | 成都九洲电子信息系统股份有限公司 |
主分类号: | H04L67/06 | 分类号: | H04L67/06;H04L67/1095;G06F13/16 |
代理公司: | 成都虹盛汇泉专利代理有限公司 51268 | 代理人: | 刘冬静 |
地址: | 610041 四川省成都*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 文件 下载 完成 后回调 方法 | ||
本发明公开了一种文件下载完成后回调的方法,该方法包括利用客户端创建文件下载请求和回调请求并同时发送至服务器,利用服务器拦截请求并进行处理,将回调请求返回至客户端执行回调过程。本发明通过客户端将Form表单请求和Ajax请求同时发送至服务器,并在服务器端通过线程同步的方式保证Ajax请求晚于Form请求完成,使得开发人员能轻松实现在文件下载完成之后设置回调,从而提升相关业务的用户体检。
技术领域
本发明属于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、当获取得到两个带有相同唯一标识的请求后,首先处理主请求进行数据获取和文件下载,再处理辅助请求。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于成都九洲电子信息系统股份有限公司,未经成都九洲电子信息系统股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910728696.2/2.html,转载请声明来源钻瓜专利网。