发明内容
有鉴于此,本发明提出一种文件下载方法和装置,在发出文件下载请求的同时,发出下载监控请求,并禁用下载按钮,对下载状态进行实时监控,下载链接建立之后立即启用下载按钮。
本发明提供一种用于文件下载的方法,包括:步骤一,创建文件下载请求、下载监控请求和下载进度标识,其中下载进度标识的默认标识为第一标识;步骤二,将文件下载请求、下载监控请求和下载进度标识发送出去,并将下载按钮的状态设置为第一状态;以及步骤三,基于文件下载请求向服务器请求下载文件,下载链接建立后,将下载进度标识设置为第二标识;基于下载监控请求对下载进度标识进行监控,在监控到下载进度标识被设置为第二标识后,将下载按钮的状态设置为第二状态;其中,第一标识用于指示下载操作未完成,第二标识用于指示下载操作已完成;第一状态用于指示下载按钮不可用,第二状态用于指示下载按钮可用。
优选地,在执行步骤一之前,方法进一步包括:判断下载按钮的状态,如果下载按钮的状态为第一状态,结束流程;如果下载按钮的状态为第二状态,进入步骤一。
优选地,其中下载监控请求为基于Ajax的异步请求。
优选地,其中在步骤三中下载链接建立之前,方法进一步包括:弹出下载提示窗口,得到同意的反馈后建立下载链接,下载过程中文件以流式传输方式回写至客户端。
本发明还提供一种用于文件下载的装置,包括:创建处理模块,用于创建文件下载请求、下载监控请求和下载进度标识,其中下载进度标识的默认标识为第一标识;发送处理模块,用于将文件下载请求、下载监控请求和下载进度标识发送出去,并将下载按钮的状态设置为第一状态;下载处理模块,用于基于文件下载请求向服务器请求下载文件,下载链接建立后,将下载进度标识设置为第二标识;以及监控处理模块,用于基于下载监控请求对下载进度标识进行监控,在监控到下载进度标识被设置为第二标识后,将下载按钮的状态设置为第二状态;其中,第一标识用于指示下载操作未完成,第二标识用于指示下载操作已完成;第一状态用于指示下载按钮不可用,第二状态用于指示下载按钮可用。
本发明的有益效果:利用本发明实施例能够自动设置下载按钮的可用性,既能够防止用户重复点击,又可简化用户操作复杂度,提升用户体验效果,利用本发明实施例还能够控制资源下载次数,在一定程度上优化服务器的负载压力。
具体实施方式
以下结合附图以及具体实施例,对本发明的技术方案进行详细描述。
图1为本发明实施例的用于文件下载的方法流程图,包括:
S101,用户点击客户端的下载按钮之后,客户端创建文件下载请求、下载监控请求和下载进度标识,其中下载进度标识的初始默认形式为“下载操作未完成”;
S102,将创建的上述文件下载请求、下载监控请求和下载进度标识发送到应用服务器,并且为了防止用户在等待期间重复点击下载按钮,还将该下载按钮的状态设置为“不可用”,即禁用下载按钮,例如表现为下载按钮被屏蔽变灰,此时用户点击无效;
S103,根据该文件下载请求执行下载业务,客户端从数据库中获取相应的资源链接地址,利用该资源链接地址到相应的资源服务器进行资源请求,建立下载链接之后,将下载进度标识设置为“下载操作已完成”;
S104,该下载监控请求到达应用服务器之后,可对文件下载请求的处理进度进行实时监控,当发现下载进度标识变更为“下载操作已完成”时,将该下载按钮的状态设置为“可用”,即启用下载按钮,例如将下载按钮点亮,此时用户可以再次点击下载按钮,待本次文件下载完成之后即可重新下载。
图2为本发明另一实施例的用于文件下载的方法流程图,用户点击下载按钮之后,首先判断下载按钮是否可用,下载按钮为不可用时,流程结束;下载按钮为可用时,向服务器发送两个请求和一个下载状态标识,还将当前可用的下载按钮设置为禁用;其中,一个请求是文件下载请求,对此请求进行正常的下载处理,从数据库获取下载地址,在下载链接建立后将标识符改为下载操作已完成;另一个请求是下载监控请求,其实时监控文件下载状态,当监控到下载操作已完成的标识符后,启用下载按钮。利用本发明的实施例,一方面可以避免用户重复点击下载,减轻服务器负载压力,另一方面可适时自动启用下载按钮,用户可再次下载文件,而不需要重新刷新页面,降低了操作繁复程度,用户体验好。
在某些实施例中,上述文件下载请求为正常的同步请求,上述下载监控请求为Ajax(Asynchronous Javascript And XML,异步JavaScript及XML)类型的异步请求。
在某些实施例中,下载监控请求采用Ajax异步请求,当发现下载进度标识被变更为“下载操作已完成”时,下载监控请求异步返回修改下载按钮的状态,将下载按钮的状态自动设置为“可用”。
关于Ajax类型的异步请求及相关处理方式,作以下简要介绍:在JS(Java Script)文件中,利用jQuery这个JS库中的Ajax函数实现异步请求,具体地,利用Ajax函数的timeout属性可进行超时时间设置,在success回调函数中可进行文件下载次数的判断及限制、文件下载按钮状态的设置操作,在error回调函数中可进行文件下载失败提示以及将文件下载按钮状态设置为可用的操作。
在某些实施例中,在执行文件下载业务过程中,可在客户端的浏览页面弹出下载提示窗口,询问用户文件保存名和本地保存地址等信息,用户反馈后即建立下载链接,开始从资源服务器下载文件,还可以在提示窗口中显示下载进度。其中,下载链接建立之后,立即将下载进度标识设置为“下载操作已完成”。
在某些实施例中,下载的文件以流式传输的方式回写到客户端的浏览器中。
进一步地,在某些实施例中,为了优化网络资源利用,还可以对文件下载的次数进行控制,规定用户不能无限制点击下载。
具体地,当下载监控请求在服务端监控到下载进度标识变更为“下载操作已完成”状态,下载监控请求返回到客户端,将客户端的文件下载次数加1(文件下载次数的初始值为0),然后将当前的文件下载次数与预先设定的阈值比较,如果下载次数小于预定阈值,说明没有到达下载次数限制,则将下载按钮设置为“可用”状态;反之,如果下载次数等于(或大于)预定阈值,说明已经到达(或超过)下载次数限制,则不再对下载按钮的状态进行设置,下载按钮仍为“不可用”状态。此外,还可在浏览器页面弹出“下载次数超限”或“请稍后下载”等提示窗口,起到提示用户的作用。
图4为本发明实施例的用于文件下载的装置结构框图,该装置包括:
创建处理模块10,用于创建文件下载请求、下载监控请求和下载进度标识,其中下载进度标识的默认标识为下载操作未完成;
发送处理模块12,用于将文件下载请求、下载监控请求和下载进度标识发送出去,并将下载按钮的状态设置为不可用;
下载处理模块14,用于基于文件下载请求向服务器请求下载文件,下载链接建立后,将下载进度标识设置为下载操作已完成;以及
监控处理模块16,用于基于下载监控请求对下载进度标识进行监控,在监控到下载进度标识被设置为下载操作已完成后,将下载按钮的状态设置为可用。
进一步地,参考图5,该装置还可包括第一判断处理模块18,用于在创建处理模块10工作之前,判断下载按钮的状态,如果下载按钮的状态为第一状态,则结束流程;如果下载按钮的状态为第二状态,则触发创建处理模块10。
除此之外,本发明实施例还提供一种用于文件下载的装置,其包括:
创建处理模块20,用于创建文件下载请求、下载监控请求和下载进度标识,其中该下载进度标识的默认标识为第一标识;
发送处理模块22,用于将该文件下载请求、该下载监控请求和该下载进度标识发送出去,并将该下载按钮的状态设置为第一状态;
下载处理模块24,用于基于该文件下载请求向服务器请求下载文件,下载链接建立后,将该下载进度标识设置为第二标识,并将文件下载次数加1;以及
监控处理模块26,用于基于该下载监控请求对该下载进度标识进行监控,在监控到该下载进度标识被设置为第二标识后,判断当前的文件下载次数是否小于预定阈值,如果小于,则将该下载按钮的状态设置为第二状态;如果不小于,则弹出预定提示框。
以上,结合具体实施例对本发明的技术方案进行了详细介绍,所描述的具体实施例用于帮助理解本发明的思想。本领域技术人员在本发明具体实施例的基础上做出的推导和变型也属于本发明保护范围之内。