CN103227836A - 离线下载方法和离线下载服务器 - Google Patents
离线下载方法和离线下载服务器 Download PDFInfo
- Publication number
- CN103227836A CN103227836A CN2013101589540A CN201310158954A CN103227836A CN 103227836 A CN103227836 A CN 103227836A CN 2013101589540 A CN2013101589540 A CN 2013101589540A CN 201310158954 A CN201310158954 A CN 201310158954A CN 103227836 A CN103227836 A CN 103227836A
- Authority
- CN
- China
- Prior art keywords
- download
- downloading
- resource
- piecemeal
- line
- 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.)
- Granted
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明提出一种离线下载方法和离线下载服务器。其中该方法包括以下步骤:用户向离线下载服务器提交下载任务;离线下载服务器判断下载任务是否是已经下载过的任务;如果否,则根据下载任务判断下载方式;根据下载方式将与下载任务对应的资源下载到离线下载服务器;以及将资源拷贝到用户的空间。根据本发明实施例的离线下载方法,一方面免去了用户下载资源时需要挂机的烦恼,提升了用户体验,另一方面提升了用户下载资源的速度。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种离线下载方法和离线下载服务器。
背景技术
随着计算机和互联网技术的迅猛发展,用户越来越多地希望更加便捷且不受硬件条件限制地进行文件上传、下载、分享等操作。目前存在的问题是,用户进行下载操作时,需要保持网络连接。
发明内容
本发明旨在至少解决上述技术问题之一。
为此,本发明的一个目的在于提出一种离线下载方法。该方法一方面免去了用户下载资源时需要挂机的烦恼,提升了用户体验,另一方面提升了用户下载资源的速度。
本发明的另一目的在于提出一种离线下载服务器。
为了实现上述目的,根据本发明第一方面的实施例的离线下载方法包括以下步骤:用户向离线下载服务器提交下载任务;所述离线下载服务器判断所述下载任务是否是已经下载过的任务;如果否,则根据所述下载任务判断下载方式;根据所述下载方式将与所述下载任务对应的资源下载到所述离线下载服务器;以及将所述资源拷贝到所述用户的空间。
根据本发明实施例的离线下载方法,一方面通过离线下载服务器根据用户提交的下载任务下载对应的资源,免去了用户下载资源时需要挂机的烦恼,提升了用户体验,另一方面通过离线下载服务器将该资源在用户需要时拷贝到用户的空间中,提升了用户下载资源的速度。
为了实现上述目的,根据本发明第二方面的实施例的离线下载服务器,包括:接收模块,用于接收用户提交的下载任务;第一判断模块,用于判断所述下载任务是否是已经下载过的任务;第二判断模块,用于当所述下载任务不是已经下载过的任务时,根据所述下载任务判断下载方式;下载模块,用于根据所述下载方式将与所述下载任务对应的资源下载到所述离线下载服务器;以及拷贝模块,用于将所述资源拷贝到所述用户的空间。
根据本发明实施例的离线下载服务器,一方面根据用户提交的下载任务下载对应的资源,免去了用户下载资源时需要挂机的烦恼,提升了用户体验,另一方面将该资源在用户需要时拷贝到用户的空间中,提升了用户下载资源的速度。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,
图1是根据本发明一个实施例的离线下载方法的流程图;
图2是根据本发明一个具体实施例的离线下载方法的流程图;
图3是根据本发明另一个具体实施例的离线下载方法的流程图;
图4是根据本发明一个实施例的根据分块下载方式进行下载的流程图;
图5是根据本发明一个实施例的根据不分块大文件下载方式进行下载的流程图;
图6是根据本发明一个实施例的根据不分块小文件下载方式进行下载的流程图;
图7是根据本发明一个实施例的离线下载服务器从资源服务器以断点续传的方式下载资源的过程的流程图;
图8是根据本发明一个实施例的离线下载服务器的结构示意图;
图9是根据本发明一个具体实施例的离线下载服务器的结构示意图;以及
图10是根据本发明另一个具体实施例的离线下载服务器的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
下面参考附图描述根据本发明实施例的离线下载方法和离线下载服务器。
目前,用户可从多个资源服务器下载自己感兴趣的多个资源存储在个人电脑上,但是多个资源服务器对应的下载资源可能不尽相同,并且需要保持网络连接,如果利用离线下载服务器代替用户从资源服务器下载资源并将所下载的资源拷贝到用户的云存储空间中,当用户想要该资源时,可从云存储空间中获取该资源,由此可以免去用户下载资源时必须保持网络连接的烦恼,为此,本发明提出了一种离线下载方法,包括以下步骤:用户向离线下载服务器提交下载任务;离线下载服务器判断下载任务是否是已经下载过的任务;如果否,则根据下载任务判断下载方式;根据下载方式将与下载任务对应的资源下载到离线下载服务器;以及将资源拷贝到用户的空间。
图1是根据本发明一个实施例的离线下载方法的流程图。
如图1所示,离线下载方法包括:
S101,用户向离线下载服务器提交下载任务。
在本发明的一个实施例中,还包括步骤:离线下载服务器将下载任务放入多任务队列并按照预定时间间隔分配执行多任务队列中的任务。
具体地,用户例如可以通过客户端或者客户端应用程序等将下载任务的URL地址提交到离线下载服务器,离线下载服务器接收用户发送的下载任务的URL地址后,将该URL地址加入到多任务队列,然后离线下载服务器中的任务分发机按照预定时间间隔(例如6秒钟)将多任务队列中的下载任务分配至任务工作机。
其中,某些资源服务器会设置一些策略防盗链,离线下载服务器发送请求至资源服务器时,需要指定一些资源的头信息header中的-ua、-refer,其中,-ua(user agent,用户代理)它是一个特殊字符串头,使得离线服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等;-refer,用来标识当前网页是从哪个网页跳转过来的一个链接地址,然后接收返回的状态码statuscode信息,并根据statuscode信息判断跳转还是statusOK。如果离线下载服务器判断是跳转,则离线下载服务器将跳转后的真实URL地址加入到多任务队列。
S102,离线下载服务器判断下载任务是否是已经下载过的任务。
S103,如果否,则根据下载任务判断下载方式。
例如,下载方式可以包括分块下载、不分块大文件下载和不分块小文件下载等。
S104,根据下载方式将与下载任务对应的资源下载到离线下载服务器。
在本发明的一个实施例中,离线下载服务器记录与下载任务对应的资源地址。具体地,离线下载服务器将下载任务对应的资源地址,即下载任务对应的资源的URL地址记录在离线下载服务器中,例如可以记录到离线下载服务器的资源库中,由此可以在其它用户向离线下载服务器提交相同的下载任务时,离线下载服务器可以根据资源地址查找到下载任务对应的资源,由此,避免了离线下载服务器从资源服务器重复下载相同的资源,节省了离线下载服务器的流量和带宽。
S105,将资源拷贝到用户的空间。
具体地,离线下载服务器可以将下载的资源拷贝到用户的空间中,例如网盘等,当用户需要使用该资源时,可以根据用户的请求从空间中下载到例如用户的个人电脑、或者移动终端上。
在本发明的而一个实施例中,用户还可以通过发布渠道分享下载的资源,例如论坛、博客等。
根据本发明实施例的离线下载方法,一方面通过离线下载服务器根据用户提交的下载任务下载对应的资源,免去了用户下载资源时需要挂机的烦恼,提升了用户体验,另一方面通过离线下载服务器将该资源在用户需要时拷贝到用户的空间中,提升了用户下载资源的速度。
图2是根据本发明一个具体实施例的离线下载方法的流程图。
如图2所示,离线下载方法包括:
S201,用户向离线下载服务器提交下载任务。
在本发明的一个实施例中,还包括步骤:离线下载服务器将下载任务放入多任务队列并按照预定时间间隔分配执行多任务队列中的任务。
具体地,用户例如可以通过客户端或者客户端应用程序等将下载任务的URL地址提交到离线下载服务器,离线下载服务器接收用户发送的下载任务的URL地址后,将该URL地址加入到多任务队列,然后离线下载服务器中的任务分发机按照预定时间间隔(例如6秒钟)将多任务队列中的下载任务分配至任务工作机。
其中,某些资源服务器会设置一些策略防盗链,离线下载服务器发送请求至资源服务器时,需要指定一些资源的头信息header中的-ua、-refer,然后接收返回的状态码statuscode信息,并根据statuscode信息判断跳转还是statusOK。如果离线下载服务器判断是跳转,则离线下载服务器将跳转后的真实URL地址加入到多任务队列。
S202,离线下载服务器判断下载任务是否是已经下载过的任务。
S203,如果下载任务是未下载过的任务,则根据下载任务判断下载方式。
例如,下载方式可以包括分块下载、不分块大文件下载和不分块小文件下载等。
S204,根据下载方式将与下载任务对应的资源下载到离线下载服务器。
在本发明的一个实施例中,离线下载服务器记录与下载任务对应的资源地址。具体地,离线下载服务器将下载任务对应的资源地址,即下载任务对应的资源的URL地址记录在离线下载服务器中,例如可以记录到离线下载服务器的资源库中,由此可以在其它用户向离线下载服务器提交相同的下载任务时,离线下载服务器可以根据资源地址查找到下载任务对应的资源,由此,避免了离线下载服务器从资源服务器重复下载相同的资源,节省了离线下载服务器的流量和带宽。
S205,将资源拷贝到用户的空间。
具体地,离线下载服务器可以将下载的资源拷贝到用户的空间中,例如网盘等,当用户需要使用该资源时,可以根据用户的请求从空间中下载到例如用户的个人电脑、或者移动终端上。
在本发明的而一个实施例中,用户可以通过发布渠道分享下载的资源,例如论坛、博客等。
S206,如果下载任务是已经下载过的任务,则根据与下载任务对应的资源地址将与下载任务对应的资源拷贝到用户的空间。
具体地,如果离线下载服务器下载过该下载任务对应的资源,则离线下载服务器根据资源地址查找到已经下载过的资源,并将资源拷贝到用户的空间上。
根据本发明实施例的离线下载方法,当离线下载服务器判断下载任务是已经下载过的任务时,根据与下载任务对应的资源地址将与下载任务对应的资源拷贝到用户的空间,避免了离线下载服务器从资源服务器重复下载相同的资源,节省了离线下载服务器的流量和带宽。
图3是根据本发明另一个具体实施例的离线下载方法的流程图。
离线下载服务器判断下载任务是未下载过的任务后,为下载任务选择适合的下载方式,以使离线下载服务器根据适合的下载方式完成下载该下载任务对应的资源,具体的过程如图3所示的本发明提出的一个具体实施例,离线下载方法包括:
S301,用户向离线下载服务器提交下载任务。
在本发明的一个实施例中,还包括步骤:离线下载服务器将下载任务放入多任务队列并按照预定时间间隔分配执行多任务队列中的任务。
具体地,用户例如可以通过客户端或者客户端应用程序等将下载任务的URL地址提交到离线下载服务器,离线下载服务器接收用户发送的下载任务的URL地址后,将该URL地址加入到多任务队列,然后离线下载服务器中的任务分发机按照预定时间间隔(例如6秒钟)将多任务队列中的下载任务分配至任务工作机。
其中,某些资源服务器会设置一些策略防盗链,离线下载服务器发送请求至资源服务器时,需要指定一些资源的头信息header中的-ua、-refer,然后接收返回的状态码statuscode信息,并根据statuscode信息判断跳转还是statusOK。如果离线下载服务器判断是跳转,则离线下载服务器将跳转后的真实URL地址加入到多任务队列。
S302,离线下载服务器判断下载任务是否是已经下载过的任务。
S303,如果下载任务是未下载过的任务,则离线下载服务器发送http请求至资源服务器。
S304,离线下载服务器根据资源服务器的对http请求的返回值判断与下载任务对应的资源是否支持断点续传并选择分块下载、不分块大文件下载和不分块小文件下载中的一种下载方式。
具体地,离线下载服务器可以根据返回值accep-range,其中accept-range是http协议的一个字段名称,用来标识本次请求是分片请求,并不是默认情况下请求文件的最开始部分,判断下载任务对应的资源是否支持断点续传,并根据返回值accep-range为下载任务选择分块下载、不分块大文件下载和不分块小文件下载中的一种下载方式。
更具体地,如果离线下载服务器根据返回值accep-range判断下载任务对应的资源可以分块下载,则离线下载服务器为下载任务选择分块下载方式;如果离线下载服务器根据返回值accep-range判断下载任务对应的资源不可以分块下载并且资源大小大于预设大小(例如8兆)或者大小未知,则离线下载服务器为下载任务选择不分块大文件下载方式;如果离线下载服务器根据返回值accep-range判断下载任务对应的资源不可以分块下载并且资源大小小于预设大小(例如8兆),则离线下载服务器为下载任务选择不分块小文件下载方式。
S305,根据下载方式将与下载任务对应的资源下载到离线下载服务器。
在本发明的一个实施例中,离线下载服务器记录与下载任务对应的资源地址。具体地,离线下载服务器将下载任务对应的资源地址,即下载任务对应的资源的URL地址记录在离线下载服务器中,例如可以记录到离线下载服务器的资源库中,由此可以在其它用户向离线下载服务器提交相同的下载任务时,离线下载服务器可以根据资源地址查找到下载任务对应的资源,避免了离线下载服务器从资源服务器重复下载相同的资源,节省了离线下载服务器的流量和带宽。
S306,将资源拷贝到用户的空间。
具体地,离线下载服务器可以将下载的资源拷贝到用户的空间中,例如网盘等,当用户需要使用该资源时,可以根据用户的请求从空间中下载到例如用户的个人电脑、或者移动终端上。
在本发明的而一个实施例中,用户可以通过发布渠道分享下载的资源,例如论坛、博客等。
S307,如果下载任务是已经下载过的任务,则根据与下载任务对应的资源地址将与下载任务对应的资源拷贝到用户的空间。
具体地,如果离线下载服务器下载过该下载任务对应的资源,离线下载服务器根据资源地址查找到已经下载过的资源,并将资源拷贝到用户的空间上。
根据本发明实施例的离线下载方法,离线下载服务器为下载任务对应的资源选择适合的下载方式,进一步提高了下载的效率。
离线下载服务器根据不同的资源类型可以为下载任务对应的资源选择分块下载、不分块大文件下载和不分块小文件下载中的一种下载方式,下面结合图4、图5和图6分别详细说明采用三种不同的下载方式进行下载的具体过程。
图4是根据本发明一个实施例的根据分块下载方式进行下载的流程图。
在本发明的一个实施例中,离线下载服务器根据资源服务器的对http请求的返回值为下载任务对应的资源选择分块下载,包括以下步骤:
S41,当下载方式是分块下载时,离线下载服务器根据下载任务得到需要下载的分块。
具体地,离线下载服务器可以将下载任务对应的资源根据资源数据的大小分为多个分块,例如每4兆的资源数据为一个分块。
S42,离线下载服务器下载需要下载的分块中的第n个分块。
具体地,离线下载服务器从资源服务器按照顺序下载其中一个分块,并将该分块保存到离线下载服务器的内存中。
S43,离线下载服务器判断下载第n个分块是否成功。
S44,如果下载第n个分块是成功,则离线下载服务器将第n个分块上传到云存储。
其中,如果下载第n个分块未成功,则离线下载服务器结束下载。
S45,离线下载服务器判断上传是否成功。
S46,如果上传成功,则离线下载服务器判断是否上传了需要下载的分块中的所有分块。
其中,如果上传不成功,则离线下载服务器结束下载。
S47,如果未上传需要下载的分块中的所有分块,则令n=n+1,其中n是大于或等于1的自然数。由此,离线下载服务器继续下载分块中的新分块直至所有的分块都下载完成。
图5是根据本发明一个实施例的根据不分块大文件下载方式进行下载的流程图。
在本发明的一个实施例中,离线下载服务器根据资源服务器的对http请求的返回值为下载任务对应的资源选择不分块大文件下载包括以下步骤:
S51,当下载方式是不分块大文件下载时,离线下载服务器在离线下载服务器中创建临时文件并开始下载文件。
具体地,离线下载服务器建立和资源服务器的连接,然后创建下载任务对应的资源的临时文件并下载该文件。
S52,离线下载服务器判断文件的下载是否成功。
S53,如果文件下载成功,则离线下载服务器将文件分为预定大小的块并按照顺序将预定大小的块上传到云存储。
具体地,如果文件下载成功,则离线下载服务器将该文件根据文件数据的大小分为多个分块,例如每4兆的文件数据作为一个分块,然后离线下载服务器将每个分块的资源数据按照顺序上传至云存储空间中。
其中,如果文件下载未成功,则离线下载服务器结束下载。
S54,离线下载服务器判断上传是否成功。
S55,如果上传成功,则离线下载服务器删除临时文件,并确定下载完成。
其中,如果上传未成功,则离线下载服务器结束下载。
图6是根据本发明一个实施例的根据不分块小文件下载方式进行下载的流程图。
在本发明的一个实施例中,离线下载服务器根据资源服务器的对http请求的返回值为下载任务对应的资源选择不分块小文件下载包括以下步骤:
S61,当下载方式是不分块小文件下载时,则离线下载服务器开始下载文件。
具体地,离线下载服务器建立和资源服务器的连接,然后下载文件。
S62,离线下载服务器判断文件的下载是否成功。
S63,如果下载成功,则离线下载服务器将文件分为预定大小的块并按照顺序将预定大小的块上传到云存储。
具体地,如果文件下载成功,则离线下载服务器将该文件根据文件数据的大小分为多个分块,例如每4兆的文件数据作为一个分块,离线下载服务器将每个分块的文件数据按照顺序上传至云存储空间中。
其中,如果文件下载未成功,则离线下载服务器结束下载。
S64,离线下载服务器判断上传是否成功。
S65,如果上传成功,则离线下载服务器确定下载完成。
其中,如果上传未成功,则离线下载服务器结束下载。
如果离线下载服务器按照上述三种下载方式从资源服务器下载文件未成功或者下载出现断点(如部分分块不能成功下载),则离线下载服务器还可以利用断点续传的下载方式对下载失败进行补救,离线下载服务器建立数据文件和数据文件的下载信息文件并以XX.st命名,应当理解还可以以其他形式命名,其中,离线下载服务器可以将已下载的数据存储在数据文件中,并将文件信息(例如文件的md5值、存储路径等)保存在下载信息文件中。然后离线下载服务器尝试和资源服务器重新建立连接,以使离线下载服务器可以以断点续传的方式下载未完成下载的文件。下面详细说明一下离线下载服务器从资源服务器以断点续传的方式下载资源的过程。
图7是根据本发明一个实施例的离线下载服务器从资源服务器以断点续传的方式下载资源的过程的流程图。
如图7所示,首先,离线下载服务器可以以断点续传的方式继续下载未完成下载的文件(S71),当离线下载服务器以断点续传的方式下载文件完成后,判断文件以断点续传的方式下载是否成功(S72)。
如果离线下载服务器判断文件以断点续传的方式下载成功,则离线下载服务器判断该文件是否为重新下载的文件(S73)。如果离线下载服务器判断是重新下载的文件,则离线下载服务器将下载的文件分块的md5(Message-DigestAlgorithm,信息摘要值)值、文件名、存储路径等文件信息上传至云存储空间中,并创建新文件记录(S74),然后更新资源表中的S3Md5(为计算得出的一种32位长度的唯一标识)字段(S75)。如果离线下载服务器判断不是重新下载的文件,则离线下载服务器将已保存过的文件的md5值、文件名、存储路径等上传至云存储空间中,并创建新文件记录(S76)。然后离线下载服务器从下载任务表中移除该下载任务(S77),并更新下载文件表中的offset字段,该字段用于标识当前分片的开始位置(S78)。
如果离线下载服务器判断以断点续传的方式文件下载未成功,则离线下载服务器判断是否达到最大下载重试次数(S79),如果离线下载服务器判断下载次数达到最大下载次数,则离线下载服务器判断以断点续传的方式下载文件是否成功(S710)。如果离线下载服务器判断以断点续传的方式下载文件成功,则离线下载服务器将已上传过的文件md5值、文件名、存储路径等上传至云存储空间中,并创建新文件记录(S76),如果离线下载服务器判断以断点续传的方式下载文件未成功,则离线下载服务器从下载任务表中移除下载任务(S711),然后在下载失败任务表中插入失败任务(S712)。
如果离线下载服务器判断未达到最大下载重试次数,则离线下载服务器更新下载任务表中的重试次数,将重试次数加一,并在extra(用于记录已经下载完成的部分文件的md5信息)里添加已完成的range的md5列表(S713),其中,如果下载任务对应的文件不可分块,则extra值为空,然后离线下载服务器更新下载任务表中的offset字段(S714)。离线下载服务器在判断文件以断点续传的方式下载是否成功之后,可以从内存任务列表中移除该下载任务(S715)。
为了实现上述实施例,本发明还提出一种离线下载服务器。
一种离线下载服务器,包括:接收模块,用于接收用户提交的下载任务;第一判断模块,用于判断下载任务是否是已经下载过的任务;第二判断模块,用于当下载任务不是已经下载过的任务时,根据下载任务判断下载方式;下载模块,用于根据下载方式将与下载任务对应的资源下载到离线下载服务器;以及拷贝模块,用于将资源拷贝到用户的空间。
图8是根据本发明一个实施例的离线下载服务器的结构示意图。
如图8所示,离线下载服务器包括:接收模块110、第一判断模块120、第二判断模块130、下载模块140和拷贝模块150。
具体地,接收模块110用于接收用户提交的下载任务。更具体地,用户例如可以通过客户端或者客户端应用程序等将下载任务的URL地址提交到接收模块110。
第一判断模块120用于判断接收模块110接收的下载任务是否是已经下载过的任务。
第二判断模块130用于当第一判断模块120判断下载任务不是已经下载过的任务时,根据下载任务判断下载方式。例如,下载方式可以包括分块下载、不分块大文件下载和不分块小文件下载等。
下载模块140用于根据第二判断模块130判断的下载方式将与下载任务对应的资源下载到离线下载服务器。
拷贝模块150用于将下载模块140下载的资源拷贝到用户的空间。具体地,拷贝模块150可以将下载的资源拷贝到用户的空间中,例如网盘等,当用户需要使用该资源时,可以根据用户的请求从空间中下载到例如用户的个人电脑、或者移动终端上。
在本发明的而一个实施例中,用户还可以通过发布渠道分享下载的资源,例如论坛、博客等。
根据本发明实施例的离线下载服务器,一方面根据用户提交的下载任务下载对应的资源,免去了用户下载资源时需要挂机的烦恼,提升了用户体验,另一方面将该资源在用户需要时拷贝到用户的空间中,提升了用户下载资源的速度。
图9是根据本发明一个具体实施例的离线下载服务器的结构示意图。
如图9所示,离线下载服务器包括:接收模块110、第一判断模块120、第二判断模块130、下载模块140和拷贝模块150、添加模块160、分配执行模块170和记录模块180。
具体地,添加模块160用于将接收模块110接收下载任务放入多任务队列。更具体地,接收模块110接收用户发送的下载任务的URL地址后,添加模块160将该URL地址加入到多任务队列,其中,某些资源服务器会设置一些策略防盗链,离线下载服务器发送请求至资源服务器时,需要指定一些资源的头信息header中的-ua、-refer,然后接收返回的状态码statuscode信息,并根据statuscode信息判断跳转还是statusOK。如果离线下载服务器判断是跳转,则添加模块160将跳转后的真实URL地址加入到多任务队列。
分配执行模块170用于按照预定时间间隔分配执行多任务队列中的任务。更具体地,分配执行模块170中的任务分发机按照预定时间间隔(例如6秒钟)将多任务队列中的下载任务分配至任务工作机。
记录模块180用于记录与下载任务对应的资源地址。更具体地,下载模块140下载资源后,记录模块180将下载任务对应的资源地址,即下载任务对应的资源的URL地址记录在离线下载服务器中,例如可以记录到离线下载服务器的资源库中,由此可以在其它用户向离线下载服务器提交相同的下载任务时,离线下载服务器可以根据资源地址查找到下载任务对应的资源。
根据本发明实施例的离线下载服务器,避免了离线下载服务器从资源服务器重复下载相同的资源,节省了离线下载服务器的流量和带宽。
在本发明的一个实施例中,拷贝模块150还用于在第一判断模块120判断下载任务是已经下载过的任务时,根据与下载任务对应的资源地址将与下载任务对应的资源拷贝到用户的空间。具体地,如果第一判断模块120判断离线下载服务器下载过该下载任务对应的资源,则拷贝模块150根据资源地址查找到已经下载过的资源,并将资源拷贝到用户的空间上。根据本发明实施例的离线下载服务器,由此,避免了离线下载服务器从资源服务器重复下载相同的资源,节省了离线下载服务器的流量和带宽。
图10是根据本发明另一个具体实施例的离线下载服务器的结构示意图。
如图10所示,离线下载服务器包括:接收模块110、第一判断模块120、第二判断模块130、下载模块140、拷贝模块150、添加模块160、分配执行模块170和记录模块180、发送单元131和判断单元132。其中,第二判断模块130包括:发送单元131和判断单元132。
具体地,发送单元131用于当第一判断模块120判断下载任务不是已经下载过的任务时,发送http请求至资源服务器。
判断单元132用于根据资源服务器的对发送单元131发送的http请求的返回值判断与下载任务对应的资源是否支持断点续传并选择分块下载、不分块大文件下载和不分块小文件下载中的一种下载方式。具体地,判断单元132可以根据返回值accep-range判断下载任务对应的资源是否支持断点续传,并根据返回值accep-range为下载任务选择分块下载、不分块大文件下载和不分块小文件下载中的一种下载方式。
更具体地,如果判断单元132根据返回值accep-range判断下载任务对应的资源可以分块下载,则判断单元132为下载任务选择分块下载方式;如果判断单元132根据返回值accep-range判断下载任务对应的资源不可以分块下载并且资源大小大于预设大小(例如8兆)或者大小未知,则判断单元132为下载任务选择不分块大文件下载方式;如果判断单元132根据返回值accep-range判断下载任务对应的资源不可以分块下载并且资源大小小于预设大小(例如8兆),则判断单元132为下载任务选择不分块小文件下载方式。
根据本发明实施例的离线下载服务器,为下载任务对应的资源选择适合的下载方式,进一步提高了下载的效率。
在本发明的一个实施例中,下载模块140还用于当第二判断模块130判断下载方式是分块下载时,根据下载任务得到需要下载的分块,并下载需要下载的分块中的第n个分块,以及判断下载第n个分块是否成功,并在判断下载第n个分块成功时,将第n个分块上传到云存储,以及判断上传是否成功,并在判断第n个分块上传成功时,判断是否上传了需要下载的分块中的所有分块,以及在判断未上传需要下载的分块中的所有分块时,令n=n+1,其中n是大于或等于1的自然数。具体地,下载模块140可以将下载任务对应的资源根据资源数据的大小分为多个分块,例如每4兆的资源数据为一个分块,然后下载模块140从资源服务器按照顺序下载其中一个分块,并将该分块保存到离线下载服务器的内存中,然后下载模块140判断下载第n个分块是否成功,如果下载成功,则下载模块140将第n个分块上传到云存储,如果下载未成功,则下载模块140结束下载。然后下载模块140判断上传是否成功,如果上传成功,则下载模块140判断是否上传了需要下载的分块中的所有分块,如果上传未成功,则下载模块140结束下载,然后如果下载模块140判断未上传需要下载的分块中的所有分块,则令n=n+1,由此,下载模块140继续下载分块中的新分块直至所有的分块都下载完成。
在本发明的一个实施例中,下载模块140还用于当第二判断模块130判断下载方式是不分块大文件下载时,在离线下载服务器创建临时文件并开始下载文件,并判断文件的下载是否成功,以及在判断文件的下载成功时,将文件分为预定大小的块并按照顺序将预定大小的块上传到云存储,并判断上传是否成功,以及在判断上传成功时,删除临时文件。具体地,下载模块140建立和资源服务器的连接,然后创建下载任务对应的资源的临时文件并下载该文件,然后判断下载是否成功,如果下载成功,则下载模块140将该文件根据文件数据的大小分为多个分块,例如每4兆的文件数据作为一个分块,然后下载模块140将每个分块的资源数据按照顺序上传至云存储空间中,如果下载未成功,则下载模块140结束下载,然后下载模块140判断上传是否成功,如果上传成功,则下载模块140删除临时文件,并确定下载完成,如果上传未成功,则下载模块140结束下载
在本发明的一个实施例中,下载模块140还用于当第二判断模块130判断下载方式是不分块小文件下载时,开始下载文件,并判断文件的下载是否成功,以及在文件下载成功时,将文件分为预定大小的块并按照顺序将预定大小的块上传到云存储。
在本发明的实施例中,终端可以是笔记本、台式机、手机、PDA、上网本等各种终端。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
Claims (16)
1.一种离线下载方法,其特征在于,包括以下步骤:
用户向离线下载服务器提交下载任务;
所述离线下载服务器判断所述下载任务是否是已经下载过的任务;
如果否,则根据所述下载任务判断下载方式;
根据所述下载方式将与所述下载任务对应的资源下载到所述离线下载服务器;以及
将所述资源拷贝到所述用户的空间。
2.根据权利要求1所述的离线下载方法,其特征在于,进一步包括步骤:
所述离线下载服务器将所述下载任务放入多任务队列并按照预定时间间隔分配执行所述多任务队列中的任务。
3.根据权利要求1所述的离线下载方法,其特征在于,进一步包括步骤:
记录与所述下载任务对应的资源地址。
4.根据权利要求1至3中任一项所述的离线下载方法,其特征在于,进一步包括步骤:
如果所述下载任务是已经下载过的任务,则根据与所述下载任务对应的资源地址将与所述下载任务对应的资源拷贝到所述用户的空间。
5.根据权利要求1至3中任一项所述的离线下载方法,其特征在于,根据所述下载任务判断下载方式的步骤包括:
发送http请求至资源服务器;
根据所述资源服务器的对所述http请求的返回值判断与所述下载任务对应的资源是否支持断点续传并选择分块下载、不分块大文件下载和不分块小文件下载中的一种下载方式。
6.根据权利要求5所述的离线下载方法,其特征在于,根据所述下载方式将与所述下载任务对应的资源下载到所述离线下载服务器包括:
当所述下载方式是分块下载时,根据所述下载任务得到需要下载的分块;
下载所述需要下载的分块中的第n个分块;
判断下载所述第n个分块是否成功;
如果是,则将所述第n个分块上传到云存储;
判断所述上传是否成功;
如果是,则判断是否上传了所述需要下载的分块中的所有分块;以及
如果否,则令n=n+1,其中n是大于或等于1的自然数。
7.根据权利要求5所述的离线下载方法,其特征在于,根据所述下载方式将与所述下载任务对应的资源下载到所述离线下载服务器包括:
当所述下载方式是不分块大文件下载时,在所述离线下载服务器创建临时文件并开始下载文件;
判断所述文件的下载是否成功;
如果是,则将所述文件分为预定大小的块并按照顺序将所述预定大小的块上传到云存储;
判断所述上传是否成功;以及
如果是,则删除所述临时文件。
8.根据权利要求5所述的离线下载方法,其特征在于,根据所述下载方式将与所述下载任务对应的资源下载到所述离线下载服务器包括:
当所述下载方式是不分块小文件下载时,则开始下载文件;
判断所述文件的下载是否成功;以及
如果是,则将所述文件分为预定大小的块并按照顺序将所述预定大小的块上传到云存储。
9.一种离线下载服务器,其特征在于,包括:
接收模块,用于接收用户提交的下载任务;
第一判断模块,用于判断所述下载任务是否是已经下载过的任务;
第二判断模块,用于根据所述第一判断模块判断所述下载任务不是已经下载过的任务时,根据所述下载任务判断下载方式;
下载模块,用于根据所述下载方式将与所述下载任务对应的资源下载到所述离线下载服务器;以及
拷贝模块,用于将所述资源拷贝到所述用户的空间。
10.根据权利要求9所述的离线下载服务器,其特征在于,还包括:
添加模块,用于将所述下载任务放入多任务队列;以及
分配执行模块,用于按照预定时间间隔分配执行所述多任务队列中的任务。
11.根据权利要求9所述的离线下载服务器,其特征在于,还包括:
记录模块,用于记录与所述下载任务对应的资源地址。
12.根据权利要求9至11中任一项所述的离线下载服务器,其特征在于,所述拷贝模块还用于:
在所述下载任务是已经下载过的任务时,根据与所述下载任务对应的资源地址将与所述下载任务对应的资源拷贝到所述用户的空间。
13.根据权利要求9至11中任一项所述的离线下载服务器,其特征在于,所述第二判断模块包括:
发送单元,用于发送http请求至资源服务器;
判断单元,用于根据所述资源服务器的对所述http请求的返回值判断与所述下载任务对应的资源是否支持断点续传并选择分块下载、不分块大文件下载和不分块小文件下载中的一种下载方式。
14.根据权利要求13所述的离线下载服务器,其特征在于,所述下载模块还用于:当所述下载方式是分块下载时,根据所述下载任务得到需要下载的分块,并下载所述需要下载的分块中的第n个分块,以及判断下载所述第n个分块是否成功,并在判断下载所述第n个分块成功时,将所述第n个分块上传到云存储,以及判断所述上传是否成功,并在判断所述第n个分块上传成功时,判断是否上传了所述需要下载的分块中的所有分块,以及在判断未上传所述需要下载的分块中的所有分块时,令n=n+1,其中n是大于或等于1的自然数。
15.根据权利要求13所述的离线下载服务器,其特征在于,所述下载模块还用于:
当所述下载方式是不分块大文件下载时,在所述离线下载服务器创建临时文件并开始下载文件,并判断所述文件的下载是否成功,以及在判断所述文件的下载成功时,将所述文件分为预定大小的块并按照顺序将所述预定大小的块上传到云存储,并判断所述上传是否成功,以及在判断所述上传成功时,删除所述临时文件。
16.根据权利要求14所述的离线下载服务器,其特征在于,所述下载模块还用于:
当所述下载方式是不分块小文件下载时,开始下载文件,并判断所述文件的下载是否成功,以及在所述文件下载成功时,将所述文件分为预定大小的块并按照顺序将所述预定大小的块上传到云存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310158954.0A CN103227836B (zh) | 2013-05-02 | 2013-05-02 | 离线下载方法和离线下载服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310158954.0A CN103227836B (zh) | 2013-05-02 | 2013-05-02 | 离线下载方法和离线下载服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103227836A true CN103227836A (zh) | 2013-07-31 |
CN103227836B CN103227836B (zh) | 2016-10-26 |
Family
ID=48838092
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310158954.0A Active CN103227836B (zh) | 2013-05-02 | 2013-05-02 | 离线下载方法和离线下载服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103227836B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103533032A (zh) * | 2013-09-26 | 2014-01-22 | 北京奇虎科技有限公司 | 带宽调节装置及方法 |
CN103631916A (zh) * | 2013-11-29 | 2014-03-12 | 北京奇虎科技有限公司 | 一种进行可下载资源下载的方法和装置 |
CN104580286A (zh) * | 2013-10-15 | 2015-04-29 | 镇江金软计算机科技有限责任公司 | 一种bs架构系统下合并存储多个文件的实现方法 |
CN105978981A (zh) * | 2016-05-19 | 2016-09-28 | 北京春鸿企业管理咨询有限公司 | 基于公有云存储账户的数据备份的线性扩容方法及系统 |
CN106973081A (zh) * | 2017-02-28 | 2017-07-21 | 百度在线网络技术(北京)有限公司 | 一种用于发布云资源的方法和装置 |
CN106993058A (zh) * | 2017-05-24 | 2017-07-28 | 儒安科技有限公司 | 网络请求的中转方法和装置 |
WO2018218419A1 (zh) * | 2017-05-27 | 2018-12-06 | 福建联迪商用设备有限公司 | 一种提高下载效率的下载方法及其下载系统 |
CN111314446A (zh) * | 2020-01-21 | 2020-06-19 | 北京达佳互联信息技术有限公司 | 一种资源更新方法、装置、服务器及存储介质 |
CN111478751A (zh) * | 2020-03-30 | 2020-07-31 | 百富计算机技术(深圳)有限公司 | 一种数据断点续传方法、装置及终端设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102118406A (zh) * | 2009-12-31 | 2011-07-06 | Tcl集团股份有限公司 | 一种终端设备离线下载方法及门户服务系统 |
CN102387220A (zh) * | 2011-12-22 | 2012-03-21 | 乐视网信息技术(北京)股份有限公司 | 一种基于云存储的离线下载的方法及其系统 |
CN102571941A (zh) * | 2011-12-27 | 2012-07-11 | 优视科技有限公司 | 云端点对点数据传输方法及系统 |
-
2013
- 2013-05-02 CN CN201310158954.0A patent/CN103227836B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102118406A (zh) * | 2009-12-31 | 2011-07-06 | Tcl集团股份有限公司 | 一种终端设备离线下载方法及门户服务系统 |
CN102387220A (zh) * | 2011-12-22 | 2012-03-21 | 乐视网信息技术(北京)股份有限公司 | 一种基于云存储的离线下载的方法及其系统 |
CN102571941A (zh) * | 2011-12-27 | 2012-07-11 | 优视科技有限公司 | 云端点对点数据传输方法及系统 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103533032B (zh) * | 2013-09-26 | 2019-03-05 | 北京奇虎科技有限公司 | 带宽调节装置及方法 |
CN103533032A (zh) * | 2013-09-26 | 2014-01-22 | 北京奇虎科技有限公司 | 带宽调节装置及方法 |
CN104580286A (zh) * | 2013-10-15 | 2015-04-29 | 镇江金软计算机科技有限责任公司 | 一种bs架构系统下合并存储多个文件的实现方法 |
CN103631916A (zh) * | 2013-11-29 | 2014-03-12 | 北京奇虎科技有限公司 | 一种进行可下载资源下载的方法和装置 |
CN103631916B (zh) * | 2013-11-29 | 2017-04-19 | 北京奇虎科技有限公司 | 一种进行可下载资源下载的方法和装置 |
CN105978981B (zh) * | 2016-05-19 | 2019-09-24 | 北京春鸿科技有限公司 | 基于公有云存储账户的数据备份的线性扩容方法及系统 |
CN105978981A (zh) * | 2016-05-19 | 2016-09-28 | 北京春鸿企业管理咨询有限公司 | 基于公有云存储账户的数据备份的线性扩容方法及系统 |
CN106973081A (zh) * | 2017-02-28 | 2017-07-21 | 百度在线网络技术(北京)有限公司 | 一种用于发布云资源的方法和装置 |
CN106993058A (zh) * | 2017-05-24 | 2017-07-28 | 儒安科技有限公司 | 网络请求的中转方法和装置 |
WO2018218419A1 (zh) * | 2017-05-27 | 2018-12-06 | 福建联迪商用设备有限公司 | 一种提高下载效率的下载方法及其下载系统 |
CN111314446A (zh) * | 2020-01-21 | 2020-06-19 | 北京达佳互联信息技术有限公司 | 一种资源更新方法、装置、服务器及存储介质 |
CN111314446B (zh) * | 2020-01-21 | 2021-05-25 | 北京达佳互联信息技术有限公司 | 一种资源更新方法、装置、服务器及存储介质 |
CN111478751A (zh) * | 2020-03-30 | 2020-07-31 | 百富计算机技术(深圳)有限公司 | 一种数据断点续传方法、装置及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103227836B (zh) | 2016-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103227836A (zh) | 离线下载方法和离线下载服务器 | |
CN102404338B (zh) | 一种文件同步方法和装置 | |
CN102946436B (zh) | 一种下载系统 | |
CN103678319B (zh) | 资源文件更新方法、装置和系统及服务器 | |
CN102819461A (zh) | 桌面同步方法、装置、设备及系统 | |
CN107689976B (zh) | 一种文件传输方法及装置 | |
CN111953642B (zh) | 一种二维码上传和下载分享文件的方法 | |
CN107105050B (zh) | 一种业务对象的存储、下载方法及系统 | |
CN105389191A (zh) | 一种基于局域网的软件升级方法、装置和系统 | |
CN103885426A (zh) | 设备的控制方法、客户端、服务器、中间设备和被控设备 | |
CN108521444B (zh) | 一种网络调试方法、装置及计算机可读存储介质 | |
CN102420863B (zh) | 一种快速分发文件系统和方法及装置 | |
CN101662503A (zh) | 网络中的信息传输方法、代理服务器和服务系统 | |
CN103124275A (zh) | 一种获取文件的方法和装置 | |
CN102271165B (zh) | 互联网搜索资源的分享管理装置及方法 | |
CN103118048A (zh) | 数据同步的方法、服务器和终端 | |
US20140229436A1 (en) | Method of File Synchronization and Electronic Device Thereof | |
CN104486388A (zh) | 云存储文件的访问方法和装置 | |
CN103297275A (zh) | Web网管客户端模块动态发现与加载的系统及方法 | |
CN103475682A (zh) | 文件迁移方法及设备 | |
CN104754062A (zh) | 基于互联网的信息推广方法、服务器及用户终端 | |
KR101429956B1 (ko) | 가상 nas를 이용한 클라우드 스토리지 서버, 시스템 및 방법 | |
CN104750372A (zh) | 一种文件共享方法和装置 | |
CN105516334A (zh) | Cdn文件分发系统 | |
CN103108009A (zh) | 基于离线空间的文件共享方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |