CN109558129A - 进度条实现方法及装置 - Google Patents
进度条实现方法及装置 Download PDFInfo
- Publication number
- CN109558129A CN109558129A CN201710888532.7A CN201710888532A CN109558129A CN 109558129 A CN109558129 A CN 109558129A CN 201710888532 A CN201710888532 A CN 201710888532A CN 109558129 A CN109558129 A CN 109558129A
- Authority
- CN
- China
- Prior art keywords
- file
- data block
- size
- event
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/323—Visualisation of programs or trace data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于nw.js的进度条实现方法及装置,通过调用位于nodejs运行环境中的http模块的http.get方法,向后台发起文件的下载请求;接收并读取返回的请求响应对象中包含的文件的总大小;调用请求响应对象的pipe方法,建立并基于输入输出流对象将文件输出至对应的文件目录;监听请求响应对象的数据块返回事件,并在事件回调函数里读取返回的数据块的大小;基于文件的总大小,以及返回的数据块的大小计算下载进度;利用文档对象模型操作更新页面上显示的下载进度条的长度。通过上述方法可以实现在桌面应用的开发过程中,显示文件的下载进度的目的。
Description
技术领域
本发明涉及软件开发技术领域,更具体地说涉及一种进度条实现方法及装置。
背景技术
在桌面应用的开发过程中,存在大量下载文件的需求。在下载文件的过程中需要通过进度条直观的显示下载进度。
目前,技术人员可以使用nw.js开发桌面应用,该nw.js是一个使用Web技术创建本地应用的框架,它结合了开源浏览器Chromium和Node.js,可以使用HTML,CSS和JavaScript来开发桌面应用。在基于nw.js开发桌面应用时,与开发网页应用的操作相似,通过<a>标签进行下载。具体操作为:点击<a>标签后,由nw.js内置浏览器完成下载操作。
但是,由于开发网页应用时,单纯使用HTML,CSS和JavaScript很难获取下载进度,同样的,采用与开发网页应用相似操作的方式开发桌面应用时,也无法显示文件的下载进度。
发明内容
有鉴于此,本申请提供了一种进度条实现方法及装置,以实现在桌面应用的开发过程中,显示文件的下载进度的目的。
为了实现上述目的,现提出的方案如下:
本发明第一方面公开了一种进度条实现方法,基于nw.js内置浏览器中内置的nodejs的调用接口API,所述进度条实现方法包括:
调用位于所述nodejs运行环境中的http模块的GET请求发送方法,向后台发起文件的下载请求;
接收响应所述下载请求的回调函数返回的请求响应对象,并读取所述请求响应对象的文件头属性中包含的所述文件的总大小;
调用所述请求响应对象的通道传输方法,建立输入输出流对象,并基于所述输入输出流对象将所述文件输出至对应的文件目录;
监听所述请求响应对象的数据块返回事件,并在事件回调函数里读取所述数据块返回事件返回的数据块的大小;
基于所述文件的总大小,以及所述数据块返回事件返回的数据块的大小计算下载进度;
根据所述下载进度,利用文档对象模型DOM操作更新页面上显示的下载进度条的长度。
优选的,所述读取所述请求响应对象的文件头属性中包含的所述文件的总大小,包括:
读取所述请求响应对象的文件头属性中包含的对应所述下载请求的响应头信息,所述下载请求的响应头信息中包括所述文件的总大小;
读取所述下载请求的响应头信息,得到所述文件的总大小。
优选的,还包括:
设置所述文件的已下载数据块的大小为0。
优选的,所述基于所述文件的总大小,以及在事件回调函数里读取所述数据块返回事件返回的数据块的大小计算下载进度,包括:
在所述事件回调函数里读取所述数据块返回事件返回的数据块的大小,将所述数据块的大小累加至已下载数据快的大小中;
读取所述文件的总大小;
利用所述已下载数据快的大小和所述文件的总大小计算下载进度D,所述下载进度D=(nowSize/totalSize)*100,其中,nowSize指已下载数据块的大小,totalSize为文件的总大小。
优选的,还包括:
监听所述输入输出流对象的输出流结束事件;
若监听到所述输入输出流对象的输出流结束事件被触发,确定所述文件下载完成;
删除所述事件回调函数里的所述下载进度条。
优选的,还包括:
利用nw.js中的HTML和/或CSS设置所述进度条在页面上的所述下载进度条的显示方式。
本发明第二方面公开了一种进度条实现装置,包括:
第一调用模块,用于调用位于所述nodejs运行环境中的http模块的GET请求发送方法,向后台发起文件的下载请求;
读取模块,用于接收响应所述下载请求的回调函数返回的请求响应对象,并读取所述请求响应对象的文件头属性中包含的所述文件的总大小;
第二调用模块,用于调用所述请求响应对象的通道传输方法,建立输入输出流输入输出流对象,并基于所述输入输出流对象将所述文件输出至对应的文件目录;
第一监听模块,用于监听所述请求响应对象的数据块返回事件,并在事件回调函数里读取所述数据块返回事件返回的数据块的大小;
计算模块,用于基于所述文件的总大小,以及所述数据块返回事件返回的数据块的大小计算下载进度;
更新模块,用于根据所述下载进度,利用文档对象模型DOM操作更新页面上显示的下载进度条的长度。
优选的,所述读取模块,具体用于读取所述请求响应对象的文件头header属性中包含的对应所述下载请求的响应头信息,得到包含于所述下载请求的响应头信息中的所述文件的总大小。
本发明第三方面公开了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如上述本发明第一方面公开的进度条实现方法。
本发明第四方面公开了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行如上述本发明第一方面公开的进度条实现方法。
经由上述技术方案可知,本发明公开一种进度条实现方法、装置、存储介质及处理器。基于nw.js的内置浏览器中内置的nodejs的运行环境,在JavaScript代码中直接使用nodejs的API(调用接口)。通过调用位于所述nodejs运行环境中的http模块的GET请求发送方法,向后台发起文件的下载请求;接收响应所述下载请求的回调函数返回的请求响应对象,并读取所述请求响应对象的文件头属性中包含的所述文件的总大小;调用所述请求响应对象的通道传输方法,建立输入输出流对象,并基于所述输入输出流对象将所述文件输出至对应的文件目录;监听所述请求响应对象的数据块返回事件,并在事件回调函数里读取所述数据块返回事件返回的数据块的大小;基于所述文件的总大小,以及所述数据块返回事件返回的数据块的大小计算下载进度;根据所述下载进度,利用文档对象模型DOM操作更新页面上显示的下载进度条的长度。上述公开的进度条的实现方法直接通过nodejs的http模块的API读取相关信息,并进行相关运算和实时显示,从而实现在桌面应用的开发过程中,显示文件的下载进度的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种进度条实现方法的流程示意图;
图2为本发明实施例公开的一种进度条实现装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
由背景技术可知,现有技术中,采用与开发网页应用相似操作的方式开发桌面应用时,单纯使用HTML,CSS和JavaScript很难获取下载进度,因此,导致技术人员不清楚当前文件的下载进度。因此,本发明公开了一种进度条实现技术方案,以实现在桌面应用的开发过程中,显示文件的下载进度的目的。
如图1所示,为本发明实施例公开的一种进度条实现方法的流程示意图。在本发明实施例中技术人员可以使用nw.js开发桌面应用,该nw.js是一个使用Web技术创建本地应用的框架,它结合了开源浏览器Chromium和Node.js,可以单独使用HTML,CSS和JavaScript来开发桌面应用。具体的,该进度条的实现方法基于nw.js内置浏览器中内置的nodejs运行环境,在JavaScript代码中直接使用nodejs的API。该进度条的实现方法包括:
步骤S101:调用位于所述nodejs运行环境中的http模块的http.get方法,向后台发起文件的下载请求。
在具体实现过程中,nodejs运行环境实际上是一个Javascript运行环境,可以对一些特殊用例进行优化,提供替代的API。在具体是使用过程中,每一个Nodejs的类库中都包含了十分丰富的各类函数。例如http模块就包含了和http功能相关的函数。
http模块的http.get方法是http模块定义的与后台服务器进行交互的方法。http.get方法具体为:请求指定的页面信息,并返回实体主体。也可以理解为GET请求发送方法。
步骤S102:接收响应所述下载请求的回调函数返回的请求响应对象,并读取所述请求响应对象的文件头header属性中包含的所述文件的总大小totalSize。
在具体实现过程中,http.get方法中请求的回调函数会响应下载请求,并返回一个请求响应对象。
该请求响应对象的文件头header属性中包含的对应所述下载请求的响应头信息,所述下载请求的响应头信息中包括所述文件的总大小totalSize。
因此,读取所述下载请求的响应头信息,能够得到所述文件的总大小totalSize。
具体读取的为“response.headers['content-length']”。
步骤S103:调用所述请求响应对象的通道传输方法,建立输入输出流对象,并基于所述输入输出流对象将所述文件输出至对应的文件目录。
在具体实现过程中,通过请求响应对象的通道传输方法可以将两个数据流连接起来。具体方式为:建立输入输出流输入输出流对象,然后,基于该输入输出流对象将所述文件输出至对应的文件目录。该文件目录用于记录要下载的文件。
步骤S104:监听所述请求响应对象的数据块返回事件,并在事件回调函数里读取所述数据块返回事件返回的数据块的大小。
在具体实现过程中,通过监听请求响应对象的数据块返回事件可以从事件回调函数里读取数据块返回事件返回的数据块的大小,该数据块属于当前所执行下载的文件。
步骤S105:基于所述文件的总大小totalSize,以及所述数据块返回事件返回的数据块的大小计算下载进度。
在具体实现过程中,首先,在所述事件回调函数里读取所述数据块返回事件返回的数据块的大小,将所述数据块的大小累加至已下载数据块的大小nowSize中;然后,读取所述文件的总大小totalSize;最后,利用所述已下载数据快的大小nowSize和所述文件的总大小totalSize计算下载进度D,所述下载进度D=(nowSize/totalSize)*100。
进一步的,优选的,针对已下载数据块的大小nowSize,在得到所述文件的总大小totalSize之后,可以设置所述文件的已下载数据块的大小nowSize为0。一般情况下,未下载文件之前所已下载数据块的大小nowSize为0,在确定文件的总大小totalSize之后对已下载数据块的大小nowSize主动设置为0,可以使执行步骤S105时,将所述数据块的大小累加至已下载数据块的大小nowSize中,此时的已下载数据块的大小nowSize更为精确。
步骤S106:根据所述下载进度,利用文档对象模型DOM操作更新页面上显示的下载进度条的长度。
在具体实现过程中,在整个文件的下载过程中,循环执行步骤S104-步骤S106,可以动态的显示当前文件的下载进度条。
进一步的,在根据所述下载进度,利用文档对象模型DOM操作更新页面上显示的下载进度条的长度的过程中,还包括:监听所述输入输出流对象的输出流结束事件;若监听到输入输出流对象的输出流结束事件被触发,确定所述文件下载完成;删除所述事件回调函数里的所述下载进度条。
进一步需要说明的是,利用nw.js中的HTML和/或CSS设置所述进度条在页面上的所述下载进度条的显示方式。
本发明实施例公开的进度条的实现方法,通过调用位于nodejs运行环境中的http模块的http.get方法,向后台发起文件的下载请求;接收并读取返回的请求响应对象中包含的文件的总大小;调用请求响应对象的通道传输方法,建立并基于输入输出流对象将文件输出至对应的文件目录;监听请求响应对象的数据块返回事件,并在事件回调函数里读取返回的数据块的大小;基于文件的总大小,以及返回的数据块的大小计算下载进度;利用文档对象模型DOM操作更新页面上显示的下载进度条的长度。不仅可以实现在桌面应用的开发过程中,显示文件的下载进度的目的。进一步的,上述监听请求响应对象的数据块返回事件,动态显示文件的下载进度条的过程不需要依赖后台服务端,减少了客户端与后台服务器之间不必要的请求,降低了对网络资源的消耗。
基于上述本发明实施例公开的进度条实现方法,本发明实施例还对应公开了一种进度条实现装置,如图2所示,该进度条实现装置200包括:
第一调用模块201,用于调用位于所述nodejs运行环境中的http模块的http.get方法,向后台发起文件的下载请求。
读取模块202,用于接收响应所述下载请求的回调函数返回的请求响应对象,并读取所述请求响应对象的文件头header属性中包含的所述文件的总大小totalSize。
该读取模块202,具体用于读取所述请求响应对象的文件头header属性中包含的对应所述下载请求的响应头信息,得到包含于所述下载请求的响应头信息中的所述文件的总大小totalSize。
第二调用模块203,用于调用所述请求响应对象的通道传输方法,建立输入输出流输入输出流对象,并基于所述输入输出流对象将所述文件输出至对应的文件目录。
第一监听模块204,用于监听所述请求响应对象的数据块返回事件,并在事件回调函数里读取所述数据块返回事件返回的数据块的大小。
计算模块205,用于基于所述文件的总大小totalSize,以及所述数据块返回事件返回的数据块的大小计算下载进度。
该计算模块205,具体用于在所述事件回调函数里读取所述数据块返回事件返回的数据块的大小,将所述数据块的大小累加至已下载数据快的大小nowSize中,读取所述文件的总大小totalSize,利用所述已下载数据快的大小nowSize和所述文件的总大小totalSize计算下载进度D,所述下载进度D=(nowSize/totalSize)*100。
更新模块206,用于根据所述下载进度,利用文档对象模型DOM操作更新页面上显示的下载进度条的长度。
进一步的,该进度条的实现装置200还包括:
第二监听模块207,用于监听所述输入输出流对象的输出流结束事件,若监听到输入输出流对象的输出流结束事件被触发,确定所述文件下载完成。
删除模块208,用于删除所述事件回调函数里的进度条。
更进一步的,该进度条的实现装置200还包括:
设计模块209,用于利用nw.js中的HTML和/或CSS设置所述进度条在页面上的所述下载进度条的显示方式。
上述本发明实施例公开的进度条的实现装置中的各个模块具体的原理和执行过程,与上述本发明实施例公开的进度条的实现方法相同,可参见上述本发明实施例公开的进度条的实现方法中相应的部分,这里不再进行赘述。
基于上述本发明实施例公开的进度条的实现装置,上述各个模块可以通过一种由处理器和存储器构成的硬件设备实现。具体为:上述各个模块作为程序单元存储于存储器中,由处理器执行存储在存储器中的上述程序单元来实现用户兴趣度的评价。
其中,处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现进度条的显示。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
进一步的,本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述进度条的实现方法。
进一步的,本发明实施例提供了一种客户端,该客户端包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:调用位于所述nodejs运行环境中的http模块的http.get方法,向后台发起文件的下载请求;接收响应所述下载请求的回调函数返回的请求响应对象,并读取所述请求响应对象的文件头header属性中包含的所述文件的总大小totalSize;调用所述请求响应对象的通道传输方法,建立输入输出流输入输出流对象,并基于所述输入输出流对象将所述文件输出至对应的文件目录;监听所述请求响应对象的数据块返回事件,并在事件回调函数里读取所述数据块返回事件返回的数据块的大小;基于所述文件的总大小totalSize,以及所述数据块返回事件返回的数据块的大小计算下载进度;根据所述下载进度,利用文档对象模型DOM操作更新页面上显示的下载进度条的长度。
其中,具体读取所述请求响应对象的文件头header属性中包含的所述文件的总大小totalSize,包括:读取所述请求响应对象的文件头header属性中包含的对应所述下载请求的响应头信息,得到包含于所述下载请求的响应头信息中的所述文件的总大小totalSize。
其中,基于所述文件的总大小totalSize,以及所述数据块返回事件返回的数据块的大小计算下载进度,具体包括:在所述事件回调函数里读取所述数据块返回事件返回的数据块的大小,将所述数据块的大小累加至已下载数据快的大小nowSize中,读取所述文件的总大小totalSize,利用所述已下载数据快的大小nowSize和所述文件的总大小totalSize计算下载进度D,所述下载进度D=(nowSize/totalSize)*100。
进一步的,还用于监听所述输入输出流对象的输出流结束事件,若监听到输入输出流对象的输出流结束事件被触发,确定所述文件下载完成;删除所述事件回调函数里的进度条。
更进一步的,对于显示的下载进度条,可以利用nw.js中的HTML和/或CSS设置所述进度条在页面上的所述下载进度条的显示方式。
本发明实施例中公开的客户端可以是PC、PAD、手机等。
进一步的,本发明实施例还提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现进度条的显示。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:
调用位于所述nodejs运行环境中的http模块的http.get方法,向后台发起文件的下载请求;接收响应所述下载请求的回调函数返回的请求响应对象,并读取所述请求响应对象的文件头header属性中包含的所述文件的总大小totalSize;调用所述请求响应对象的通道传输方法,建立输入输出流输入输出流对象,并基于所述输入输出流对象将所述文件输出至对应的文件目录;监听所述请求响应对象的数据块返回事件,并在事件回调函数里读取所述数据块返回事件返回的数据块的大小;基于所述文件的总大小totalSize,以及所述数据块返回事件返回的数据块的大小计算下载进度;根据所述下载进度,利用文档对象模型DOM操作更新页面上显示的下载进度条的长度。
其中,具体读取所述请求响应对象的文件头header属性中包含的所述文件的总大小totalSize,包括:读取所述请求响应对象的文件头header属性中包含的对应所述下载请求的响应头信息,得到包含于所述下载请求的响应头信息中的所述文件的总大小totalSize。
其中,基于所述文件的总大小totalSize,以及所述数据块返回事件返回的数据块的大小计算下载进度,具体包括:在所述事件回调函数里读取所述数据块返回事件返回的数据块的大小,将所述数据块的大小累加至已下载数据快的大小nowSize中,读取所述文件的总大小totalSize,利用所述已下载数据快的大小nowSize和所述文件的总大小totalSize计算下载进度D,所述下载进度D=(nowSize/totalSize)*100。
进一步的,还用于监听所述输入输出流对象的输出流结束事件,若监听到输入输出流对象的输出流结束事件被触发,确定所述文件下载完成;删除所述事件回调函数里的进度条。
更进一步的,对于显示的下载进度条,可以利用nw.js中的HTML和/或CSS设置所述进度条在页面上的所述下载进度条的显示方式。
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、客户端、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种进度条实现方法,其特征在于,基于nw.js内置浏览器中内置的nodejs的调用接口API,所述进度条实现方法包括:
调用位于所述nodejs运行环境中的http模块的GET请求发送方法,向后台发起文件的下载请求;
接收响应所述下载请求的回调函数返回的请求响应对象,并读取所述请求响应对象的文件头属性中包含的所述文件的总大小;
调用所述请求响应对象的通道传输方法,建立输入输出流对象,并基于所述输入输出流对象将所述文件输出至对应的文件目录;
监听所述response对象的数据块返回事件,并在事件回调函数里读取所述数据块返回事件返回的数据块的大小;
基于所述文件的总大小,以及所述数据块返回事件返回的数据块的大小计算下载进度;
根据所述下载进度,利用文档对象模型DOM操作更新页面上显示的下载进度条的长度。
2.根据权利要求1所述的方法,其特征在于,所述读取所述请求响应对象的文件头属性中包含的所述文件的总大小,包括:
读取所述请求响应对象的文件头属性中包含的对应所述下载请求的响应头信息,所述下载请求的响应头信息中包括所述文件的总大小;
读取所述下载请求的响应头信息,得到所述文件的总大小。
3.根据权利要求2所述的方法,其特征在于,还包括:
设置所述文件的已下载数据块的大小为0。
4.根据权利要求1所述的方法,其特征在于,所述基于所述文件的总大小,以及在事件回调函数里读取所述数据块返回事件返回的数据块的大小计算下载进度,包括:
在所述事件回调函数里读取所述数据块返回事件返回的数据块的大小,将所述数据块的大小累加至已下载数据快的大小中;
读取所述文件的总大小;
利用所述已下载数据快的大小和所述文件的总大小计算下载进度D,所述下载进度D=(nowSize/totalSize)*100,其中,nowSize指已下载数据块的大小,totalSize为文件的总大小。
5.根据权利要求1-4中任一项所述的方法,其特征在于,还包括:
监听所述输入输出流对象的输出流结束事件;
若监听到所述输入输出流对象的输出流结束事件被触发,确定所述文件下载完成;
删除所述事件回调函数里的所述下载进度条。
6.根据权利要求1-4中任一项所述的方法,其特征在于,还包括:
利用nw.js中的HTML和/或CSS设置所述进度条在页面上的所述下载进度条的显示方式。
7.一种进度条的实现装置,其特征在于,包括:
第一调用模块,用于调用位于所述nodejs运行环境中的http模块的GET请求发送方法,向后台发起文件的下载请求;
读取模块,用于接收响应所述下载请求的回调函数返回的请求响应对象,并读取所述请求响应对象的文件头属性中包含的所述文件的总大小;
第二调用模块,用于调用所述请求响应对象的通道传输方法,建立输入输出流对象,并基于所述输入输出流对象将所述文件输出至对应的文件目录;
第一监听模块,用于监听所述请求响应对象的数据块返回事件,并在事件回调函数里读取所述数据块返回事件返回的数据块的大小;
计算模块,用于基于所述文件的总大小,以及所述数据块返回事件返回的数据块的大小计算下载进度;
更新模块,用于根据所述下载进度,利用文档对象模型DOM操作更新页面上显示的下载进度条的长度。
8.根据权利要求7所述的装置,其特征在于,所述读取模块,具体用于读取所述请求响应对象的文件头属性中包含的对应所述下载请求的响应头信息,得到包含于所述下载请求的响应头信息中的所述文件的总大小。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如权利要求1-6中任一项所述的进度条实现方法。
10.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行如权利要求1-6中任一项所述的进度条实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710888532.7A CN109558129A (zh) | 2017-09-27 | 2017-09-27 | 进度条实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710888532.7A CN109558129A (zh) | 2017-09-27 | 2017-09-27 | 进度条实现方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109558129A true CN109558129A (zh) | 2019-04-02 |
Family
ID=65863950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710888532.7A Pending CN109558129A (zh) | 2017-09-27 | 2017-09-27 | 进度条实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109558129A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111147942A (zh) * | 2019-12-17 | 2020-05-12 | 北京达佳互联信息技术有限公司 | 视频播放方法、装置、电子设备及存储介质 |
CN112486783A (zh) * | 2020-11-25 | 2021-03-12 | 建信金融科技有限责任公司 | 一种进度条的显示方法和装置 |
CN112882768A (zh) * | 2021-02-07 | 2021-06-01 | 深圳市来玩科技有限公司 | 进度条加载方法、装置、设备及计算机可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256500A (zh) * | 2008-03-28 | 2008-09-03 | 腾讯科技(深圳)有限公司 | 一种软件安装的方法、系统、客户端及服务器 |
CN101854421A (zh) * | 2010-05-27 | 2010-10-06 | 深圳市五巨科技有限公司 | 移动终端及其多媒体内容下载方法 |
CN103095807A (zh) * | 2012-12-26 | 2013-05-08 | 四川九洲电器集团有限责任公司 | 一种实时显示前端设备录像下载进度的方法及系统 |
CN104216818A (zh) * | 2014-09-04 | 2014-12-17 | 上海天脉聚源文化传媒有限公司 | 一种计算机处理进度的显示控制方法及装置 |
CN104714716A (zh) * | 2013-12-12 | 2015-06-17 | 乐视网信息技术(北京)股份有限公司 | 一种下载信息的显示方法及装置 |
US20160202969A1 (en) * | 2013-01-28 | 2016-07-14 | Paptap Ltd | Automatic submission of applications to applications stores |
CN106484432A (zh) * | 2016-11-01 | 2017-03-08 | 武汉斗鱼网络科技有限公司 | 一种进度条定制方法、装置及进度条 |
-
2017
- 2017-09-27 CN CN201710888532.7A patent/CN109558129A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256500A (zh) * | 2008-03-28 | 2008-09-03 | 腾讯科技(深圳)有限公司 | 一种软件安装的方法、系统、客户端及服务器 |
CN101854421A (zh) * | 2010-05-27 | 2010-10-06 | 深圳市五巨科技有限公司 | 移动终端及其多媒体内容下载方法 |
CN103095807A (zh) * | 2012-12-26 | 2013-05-08 | 四川九洲电器集团有限责任公司 | 一种实时显示前端设备录像下载进度的方法及系统 |
US20160202969A1 (en) * | 2013-01-28 | 2016-07-14 | Paptap Ltd | Automatic submission of applications to applications stores |
CN104714716A (zh) * | 2013-12-12 | 2015-06-17 | 乐视网信息技术(北京)股份有限公司 | 一种下载信息的显示方法及装置 |
CN104216818A (zh) * | 2014-09-04 | 2014-12-17 | 上海天脉聚源文化传媒有限公司 | 一种计算机处理进度的显示控制方法及装置 |
CN106484432A (zh) * | 2016-11-01 | 2017-03-08 | 武汉斗鱼网络科技有限公司 | 一种进度条定制方法、装置及进度条 |
Non-Patent Citations (2)
Title |
---|
佚名: "[进度条]文件下载", 《HTTPS://BLOG.CSDN.NET/KONAJI/ARTICLE/DETAILS/50864171?LOCATIONNUM=9&FPS=1》 * |
李芳芳: "一种基于安卓平台的视频采集端软件自动更新升级功能的设计与实现", 《有限电视技术 数字电视》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111147942A (zh) * | 2019-12-17 | 2020-05-12 | 北京达佳互联信息技术有限公司 | 视频播放方法、装置、电子设备及存储介质 |
CN112486783A (zh) * | 2020-11-25 | 2021-03-12 | 建信金融科技有限责任公司 | 一种进度条的显示方法和装置 |
CN112486783B (zh) * | 2020-11-25 | 2022-09-27 | 建信金融科技有限责任公司 | 一种进度条的显示方法和装置 |
CN112882768A (zh) * | 2021-02-07 | 2021-06-01 | 深圳市来玩科技有限公司 | 进度条加载方法、装置、设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885627B (zh) | 向远程客户端提供查询结果数据的查询即服务系统 | |
CN103942225B (zh) | 一种混合型应用客户端的资源调用方法、客户端及系统 | |
CN105446750B (zh) | WebApp启动运行、生成镜像文件的方法和装置 | |
TWI549080B (zh) | The method, system and device for sending information of category information | |
KR101768793B1 (ko) | 토큰 피기백킹 시스템 및 방법 | |
US8825749B2 (en) | Method of tracking offline user interaction in a rendered document on a mobile device | |
US20160057199A1 (en) | Systems and methods for transmitting a media file in multiple portions | |
CN105900131A (zh) | 用于基于优先级的数字内容下载的系统和方法 | |
CN106791889B (zh) | 一种视频处理方法及系统、分布式对象存储系统 | |
CN106656920B (zh) | Http服务的处理方法、装置、存储介质及处理器 | |
US20150278171A1 (en) | Single page application authoring in a content management system | |
Mann | Notions of architecture in fog computing | |
CN109829121B (zh) | 一种点击行为数据上报的方法和装置 | |
CN109558129A (zh) | 进度条实现方法及装置 | |
JP7005141B2 (ja) | リモートモニタリングのための方法、及び信号取得及びリモートモニタリングのためのシステム | |
WO2014183487A1 (zh) | 一种网页中视频的播放方法和装置 | |
CN104135507A (zh) | 一种防盗链的方法和装置 | |
CN106528108A (zh) | 一种基于代码文件路由的web开发方法和装置 | |
CN103414793A (zh) | 一种图片下载及上传装置和方法 | |
US20190327324A1 (en) | Request orchestration using predictive service congestion control | |
CN106788896A (zh) | 日志数据的上传方法和装置 | |
CN109995787A (zh) | 一种数据处理方法及相关设备 | |
CN109240756A (zh) | 一种动态加载JavaScript模块的方法及装置 | |
CN109688483A (zh) | 一种获取视频的方法、装置及电子设备 | |
CN107766307A (zh) | 一种表单元素联动的方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 100080 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing Applicant after: BEIJING GRIDSUM TECHNOLOGY Co.,Ltd. Address before: 100086 Beijing city Haidian District Shuangyushu Area No. 76 Zhichun Road cuigongfandian 8 layer A Applicant before: BEIJING GRIDSUM TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190402 |
|
RJ01 | Rejection of invention patent application after publication |