一种文件下载方法及装置与流程

文档序号:11864751阅读:222来源:国知局
一种文件下载方法及装置与流程

本发明涉及信息通信技术领域,特别涉及一种文件下载方法及装置。



背景技术:

随着网页开发技术的发展,Ajax(Asynchronous JavaScript And XML,异步JavaScript和XML)作为一种创建交互式网页应用的网页开发技术,已被广泛使用。

目前,基于Ajax创建的网页应用主要通过浏览器从服务器中下载文件,即通过浏览器向服务器发送携带URL(Uniform Resoure Locator,统一资源定位符)地址的下载请求,使得服务器根据接收到的URL地址将该URL地址的目标文件转换为特定格式的数据后发送至中间件容器,比如,Apache、Tomcat等,中间件容器将特定格式的数据转换为目标文件后传输至浏览器,实现从服务器中下载文件。

可见,传统的基于Ajax创建的网页应用从服务器下载文件时依赖于中间件容器,中间件容器的性能直接影响目标文件的下载情况,文件下载的工作效率较低。



技术实现要素:

本发明实施例提供了一种文件下载方法及装置,可提高文件下载的工作效率。

第一方面,本发明实施例提供了一种文件下载方法,包括:

S0:预先设置基于Ajax技术创建的XMLHttpRequest对象的数据请求格式为二进制数据;

S1:利用XMLHttpRequest对象向外部服务器发送对应目标文件的数据请求;

S2:接收外部服务器根据所述数据请求发送的对应目标文件的二进制数据;

S3:解析所述二进制数据以形成目标文件;

S4:创建对应所述目标文件的数据地址;

S5:接收对应所述数据地址的触发指令,将所述数据地址下存储的目标文件存储至对应所述触发指令的目标地址。

进一步的,

所述将所述数据地址下存储的目标文件存储至对应所述触发指令的目标地址,进一步包括:

显示所述数据地址下存储的目标文件。

进一步的,

所述预先设置基于Ajax技术创建的XMLHttpRequest对象的数据请求格式为二进制数据,进一步包括:

预先设置基于HTML5的BLOB(binary large object,二进制大对象)对象;

所述解析所述二进制数据以形成目标文件,包括:

根据所述BLOB对象解析所述二进制数据以形成目标文件。

进一步的,

所述解析所述二进制数据以形成目标文件,包括:

根据所述二进制数据构建类型化数组;

将所述类型化数组转换为二进制数组;

解析所述二进制数组以形成目标文件。

进一步的,

所述预先设置基于Ajax技术创建的XMLHttpRequest对象的数据请求格式为二进制数据,进一步包括:

预先设置URL.createObjectURL模块;

所述创建对应所述目标文件的数据地址,包括:

根据所述URL.createObjectURL模块创建对应所述目标文件的数据地址。

第二方面,本发明实施例提供了一种文件下载装置,包括:

设置模块,用于预先设置基于Ajax技术创建的XMLHttpRequest对象的数据请求格式为二进制数据;

所述XMLHttpRequest对象,用于向外部服务器发送对应目标文件的数据请求;

数据接收模块,用于接收外部服务器根据所述数据请求发送的对应目标文件的二进制数据;

数据解析模块,用于解析所述二进制数据以形成目标文件;

地址创建模块,用于创建对应所述目标文件的数据地址;

处理模块,用于接收对应所述数据地址的触发指令,将所述数据地址下存储的目标文件存储至对应所述触发指令的目标地址。

进一步的,

所述处理模块,进一步用于显示所述数据地址下存储的目标文件。

进一步的,

所述设置模块,进一步用于预先设置基于HTML5的BLOB对象;

所述数据解析模块,用于根据所述BLOB对象解析所述二进制数据以形成目标文件。

进一步的,所述数据解析模块,包括:

第一转换子单元,用于根据所述二进制数据构建类型化数组;

第二转换子单元,用于将所述类型化数组转换为二进制数组;

解析子单元,用于解析所述二进制数组以形成目标文件。

进一步的,

所述设置模块,进一步用于预先设置URL.createObjectURL模块;

所述地址创建模块,用于根据所述URL.createObjectURL模块创建对应所述目标文件的数据地址。

本发明实施例提供了一种文件下载方法及装置,通过预先设置基于Ajax技术创建的XMLHttpRequest对象的数据请求格式为二进制数据,通过XMLHttpRequest对象向服务器发送对应目标文件的数据请求,将服务器发送的对应目标文件的二进制数据解析为目标文件,并创建对应该目标文件的数据地址,即可根据相应的触发指令将数据地址下存储的目标文件存储至对应该触发指令的目标地址下,实现下载目标文件;可见,本发明提供的技术方案中,不再利用中间件容器从服务器获取对应目标文件的原始数据,并解析原始数据以形成目标文件后发送到相应的文件下载装置,即文件下载过程中不再依赖于中间件容器,可提高文件下载的工作效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例提供的一种文件下载方法的流程图;

图2是本发明一实施例提供的另一种文件下载方法的流程图;

图3是本发明一实施例提供的一种文件下载装置的结构图;

图4是本发明一实施例提供的另一种文件下载装置的结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种文件下载方法,包括:

S0:预先设置基于Ajax技术创建的XMLHttpRequest对象的数据请求格式为二进制数据;

S1:利用XMLHttpRequest对象向外部服务器发送对应目标文件的数据请求;

S2:接收外部服务器根据所述数据请求发送的对应目标文件的二进制数据;

S3:解析所述二进制数据以形成目标文件;

S4:创建对应所述目标文件的数据地址;

S5:接收对应所述数据地址的触发指令,将所述数据地址下存储的目标文件存储至对应所述触发指令的目标地址。

本发明上述实施例中,通过预先设置基于Ajax技术创建的XMLHttpRequest对象的数据请求格式为二进制数据,通过XMLHttpRequest对象向服务器发送对应目标文件的数据请求,将服务器发送的对应目标文件的二进制数据解析为目标文件,并创建对应该目标文件的数据地址,即可根据相应的触发指令将数据地址下存储的目标文件存储至对应该触发指令的目标地址下,实现下载目标文件;可见,本发明提供的技术方案中,不再利用中间件容器从服务器获取对应目标文件的原始数据,并解析原始数据以形成目标文件后发送到相应的文件下载装置,即文件下载过程中不再依赖于中间件容器,可提高文件下载的工作效率。

进一步的,为了实现对获取的目标文件进行显示,本发明一个优选实施例中,所述将所述数据地址下存储的目标文件存储至对应所述触发指令的目标地址,进一步包括:

显示所述数据地址下存储的目标文件。

进一步的,为了实现对服务器发送的二进制大数据直接进行解析,本发明一个优选实施例中,所述预先设置基于Ajax技术创建的XMLHttpRequest对象的数据请求格式为二进制数据,进一步包括:

预先设置基于HTML5的BLOB对象;

所述解析所述二进制数据以形成目标文件,包括:

根据所述BLOB对象解析所述二进制数据以形成目标文件。

本发明上述实施例中,XMLHttpRequest level 2标准化以及HTML5的新API(Application Programming Interface,应用程序编程接口)中完善了对数据地址Data URL的支持,Data URL用于存储BLOB对象封装的二进制数据,即存储目标文件;这里可以使用Ajax技术实现对二进制数据的请求,并使用HTML5新添加的BLOB对象实现对服务器发送的二进制大数据进行解析以形成目标文件。

应当理解的是,BLOB对象解析二进制大数据后会形成一个新的BLOB对象,新的BLOB对象中封装了对应目标文件的二进制大数据,新的BLOB对象即用二进制数据表征的目标文件。

进一步的,为了方便用户根据自身业务需求对服务器返回的二进制数据进行自由处理,包括自由组织下载目标文件以及针对目标文件进行相应修改,本发明一个优选实施例中,所述解析所述二进制数据以形成目标文件,包括:

根据所述二进制数据构建类型化数组;

将所述类型化数组转换为二进制数组;

解析所述二进制数组以形成目标文件。

进一步的,本发明一个优选实施例中,所述预先设置基于Ajax技术创建的XMLHttpRequest对象的数据请求格式为二进制数据,进一步包括:

预先设置URL.createObjectURL模块;

所述创建对应所述目标文件的数据地址,包括:

根据所述URL.createObjectURL模块创建对应所述目标文件的数据地址。

本发明上述实施例中,URL.createObjectURL模块可用于记录数据地址的创建规则,以便在BLOB对象对二进制大数据进行封装以形成对应目标文件的新的BLOB对象时,根据URL.createObjectURL模块记录的数据地址创建规则创建用于存储新的BLOB对象的数据地址Data URL。

本发明上述实施例中,可以将XMLHttpRequest对象的responseType设为arraybuffer,即根据arraybuffer将对应目标文件的二进制数据转换为类型化数组,再使用Unit8Array对类型化数组arraybuffer进行封装,即可将接收到的二进制数据转换为二进制数组,然后根据URL.createObjectURL模块记录的数据地址创建规则将该二进制数组转换为数据地址Data URL,即利用数据地址Data URL存储对应目标文件的二进制数组,再遍历数据地址Data URL下存储的二进制数组以对二进制数组进行进一步的处理,比如,修改Data URL下存储的二进制数组,可实现对形成的目标文件进行相应修改。

如图2所示,本发明实施例提供了一种文件下载方法,以通过基于HTML5的BLOB对象解析二进制大数据为例,包括:

步骤201,基于Ajax技术创建XMLHttpRequest对象。

本发明实施例中,XMLHttpRequest对象用于在后台与服务器交换数据,几乎所有的浏览器(比如,IE7+、Firefox、Chrome、Safari以及Opera)均支持XMLHttpRequest对象,这里,即在上述浏览器中创建XMLHttpRequest对象。

步骤202,将XMLHttpRequest对象的ResponseType设置为二进制数据。

这里,即将XMLHttpRequest对象与服务器进行数据交换的数据格式设置为二进制数据格式。

步骤203,设置基于HTML5的BLOB对象,以及,URL.createObjectURL模块。

本发明实施例中,HTML5新添加的BLOB对象可用于对服务器发送的二进制大数据进行解析;URL.createObjectURL模块可用于记录数据地址的创建规则,以便在BLOB对象对二进制大数据进行封装以形成对应目标文件的新的BLOB对象时,根据URL.createObjectURL模块记录的数据地址创建规则创建用于存储新的BLOB对象的数据地址Data URL。

步骤204,利用XMLHttpRequest对象向服务器发送对应目标文件的数据请求。

本发明实施例中,该数据请求携带目标文件的路径信息,并指示服务器将对应该路径信息的目标文件转换为二进制数据后发送至XMLHttpRequest对象对应的浏览器或文件下载装置中。

步骤205,接收服务器发送的对应目标文件的二进制数据。

步骤206,根据BLOB对象解析二进制数据,以形成新的BLOB对象。

应当理解的是,BLOB对象解析二进制数据后会形成一个新的BLOB对象,新的BLOB对象中封装了对应目标文件的二进制数据,新的BLOB对象即用二进制数据表征的目标文件。

步骤207,根据URL.createObjectURL模块创建新的BLOB对象对应的数据地址。

本发明实施例中,利用URL.createObjectURL模块记录的数据地址创建规则根据新的BLOB对象创建一个数据地址Data URL;Data URL的生命仅存在于它被创建的某个文档中,Data URL指向新的Blob对象,即Data URL下存储新的BLOB对象。

需要说明的是,在需要对目标文件进行其他处理时,比如修改目标文件时,步骤206中可以将服务器发送的二进制数据转换为类型化数组Arraybuffer,然后利用Unit8Array对类型化数组arraybuffer进行封装,即可实现将二进制数据转换为二进制数组;然后利用URL.createObjectURL模块创建对应该二进制数组的数据地址Data URL,即可通过遍历该Data URL下的二进制数组以对二进制数组进行相应的修改,进而实现修改目标文件。

步骤208,接收对应该数据地址的触发指令。

这里,用户可通过浏览器发送对应该数据地址Data URL地址的触发指令。

步骤209,将数据地址下存储的目标文件存储至对应该触发指令的目标地址,并显示该数据地址下的目标文件。

本发明实施例中,用户可通过XMLHttpRequest对象对应的浏览器或装置实现对目标文件的下载,以将Data URL地址下存储的目标文件下载到本地的非易失性存储介质或其他目标地址;或,利用XMLHttpRequest对象以来的浏览器或文件下载装置对数据地址下的目标文件进行显示。

如图3所示,本发明实施例提供了一种文件下载装置,包括:

设置模块301,用于预先设置基于Ajax技术创建的XMLHttpRequest对象302的数据请求格式为二进制数据;

所述XMLHttpRequest对象302,用于向外部服务器发送对应目标文件的数据请求;

数据接收模块303,用于接收外部服务器根据所述数据请求发送的对应目标文件的二进制数据;

数据解析模块304,用于解析所述二进制数据以形成目标文件;

地址创建模块305,用于创建对应所述目标文件的数据地址;

处理模块306,用于接收对应所述数据地址的触发指令,将所述数据地址下存储的目标文件存储至对应所述触发指令的目标地址。

进一步的,为了实现对获取的目标文件进行显示,本发明一个优选实施例中,所述处理模块306,进一步用于显示所述数据地址下存储的目标文件。

进一步的,为了实现对服务器发送的二进制大数据直接进行解析,本发明一个优选实施例中,所述设置模块301,进一步用于预先设置基于HTML5的BLOB对象;

所述数据解析模块304,用于根据所述BLOB对象解析所述二进制数据以形成目标文件。

进一步的,为了方便用户根据自身业务需求对服务器返回的二进制数据进行自由处理,包括自由组织下载目标文件以及针对目标文件进行相应修改,如图4所示,本发明一个优选实施例中,所述数据解析模块304,包括:

第一转换子单元3041,用于根据所述二进制数据构建类型化数组;

第二转换子单元3042,用于将所述类型化数组转换为二进制数组;

解析子单元3043,用于解析所述二进制数组以形成目标文件。

进一步的,本发明一个优选实施例中,所述设置模块301,进一步用于预先设置URL.createObjectURL模块;

所述地址创建模块305,用于根据所述URL.createObjectURL模块创建对应所述目标文件的数据地址。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

本发明各个实施例至少具有如下有益效果:

1、通过预先设置基于Ajax技术创建的XMLHttpRequest对象的数据请求格式为二进制数据,通过XMLHttpRequest对象向服务器发送对应目标文件的数据请求,将服务器发送的对应目标文件的二进制数据解析为目标文件,并创建对应该目标文件的数据地址,即可根据相应的触发指令将数据地址下存储的目标文件存储至对应该触发指令的目标地址下,实现下载目标文件;可见,本发明提供的技术方案中,不再利用中间件容器从服务器获取对应目标文件的原始数据,并解析原始数据以形成目标文件后发送到相应的文件下载装置,即文件下载过程中不再依赖于中间件容器,可提高文件下载的工作效率。

2、通过将接收到的二进制数据转换为类型化数组,并将该类型化数组转换为二进制数组,并创建用于存储该二进制数组的数据地址,用户即可通过遍历该数据地址下的二进制数组以对数据地址下的二进制数组进行修改,可实现根据用户需求修改数据地址下存储的目标文件。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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