用于浏览器或服务器的大文件上传、续传方法和装置的制造方法
【技术领域】
[0001]本发明涉及浏览器文件上传,具体涉及一种基于HTML5 File API的浏览器大文件上传、续传方法和装置。
【背景技术】
[0002]目前针对大文件上传基本上有四种方案:a)通过安装客户端上传、b)通过安装浏览器插件上传、c)通过Flash上传、d)浏览器通过resumable.1s进行上传。
[0003]首先描述本申请中涉及的相关技术术语:
[0004]浏览器:浏览器是指可以显示网页服务器或者文件系统的HTML文件内容,并让用户与这些文件交互的一种软件。
[0005]HTML5:万维网的核心语言、标准通用标记语言的下一个应用超文本标记语言(HTML)的第五次重大修改。
[0006]File API:File API(文件API,API(Applicat1n Programming Interface,应用程序编程接口)是一套强大的API,它可以让开发者处理来自用户文件系统的文件,并且可以让开发者在Web应用程序里使用这些文件,所有这些事情都在本地处理,不需要在服务器上处理。
[0007]SHAl:安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准里面定义的数字签名算法。对于长度小于2~64位的消息,SHAl会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。SHAl有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要。
[0008]MD5:信息摘要算法第五版(Message-Digest Algorithm 5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一,主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。
[0009]其中方案a)和方案b)均需要用户安装额外的应用才能支持上传,且需要对整个文件行行SHAl运算,对每一个完整的文件片段进行MD5运算,极大消耗量服务端和客户端的资源,加大了服务端负载。c)方案需要浏览器支持Flash,而Flash已经是过时的技术,各大互联网企业也均开始弃用。d)方案中对文件的索引唯一性、文件分片正确性无法保证,同时也无法做到文件的快速上传。
[0010]具体地,在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
[0011]a)方案和b)方案需要通过安装额外应用才能完成文件的索引唯一和文件内容的正确性验证,技术相对臃肿。方案a)中对文件SHAl和文件片段MD5取样方案相对较为浪费资源。
[0012I c)方案需要通过Flash支持才能完成大文件上传,而Flash对资源消耗极高,已经是一种过时的技术,而且其开发维护成本也不低。
[0013]d)方案虽然采用了File API来进行文件的续传和分片上传,但是该方案中采用文件名和文件大小作为文件的唯一索引,重复率较高,无法用做支持文件的快速上传,同时该方案中无法对文件数据的正确性做验证,不能保证用户所上传文件的数据的完整性。
【发明内容】
[0014]本发明实施例的目的是提供一种用于浏览器或服务器的大文件上传、续传方法和装置,以降低资源消耗,实现快速上传并保证文件数据的完整性。
[0015]—方面,本发明实施例提供了一种用于浏览器的大文件上传、续传方法,其包括:截取文件的部分内容进行安全哈希算法SHAl计算,得到文件的SHAl值;使用所述文件的SHAl值查询服务器是否已经存在所述文件;若不存在则对所述文件进行分片处理获得多个文件片段,生成各文件片段的验证信息,并将各文件片段及其验证信息执行分片上传;其中,每个文件片段的验证信息包括通过截取该文件片段的部分内容执行信息摘要算法MD5计算而生成的MD5值;若已经存在所述文件但未完成全部上传,则对所述文件的未上传的各文件片段及其验证信息执行分片续传。
[0016]另一方面,本发明实施例提供了一种浏览器,其包括:SHAl计算模块,用于截取文件的部分内容进行安全哈希算法SHAl计算,得到文件的SHAl值;
[0017]文件查询模块,用于使用所述文件的SHAl值查询服务器是否已经存在所述文件;
[0018]上传续传模块,其包括文件分割子模块、信息摘要算法MD5计算子模块、分片上传子模块和分片续传子模块;
[0019]所述文件分割子模块,用于若所述服务器上不存在所述文件则对所述文件进行分片处理获得多个文件片段;
[0020]所述MD5计算子模块,用于生成各文件片段的验证信息,其中,每个文件片段的验证信息包括通过截取该文件片段的部分内容执行MD5计算而生成的MD5值;
[0021 ]所述分片上传子模块,用于将各文件片段及其验证信息执行分片上传;
[0022]所述分片续传子模块,用于若已经存在所述文件但未完成全部上传,则对所述文件的未上传的各文件片段及其验证信息执行分片续传。
[0023]又一方面,本发明实施例提供了一种用于服务器的大文件上传、续传方法,其包括:
[0024]接收浏览器发送的文件查询请求,所述文件查询请求中包含待查询文件的安全哈希算法SHAl值;其中,所述SHAl值是所述浏览器通过截取所述待查询文件的部分内容进行SHAl计算而生成的;
[0025]向所述浏览器返回所述文件是否存在的查询结果;
[0026]接收所述浏览器在查询结果为不存在时分片上传的多个分片数据,所述分片数据包括文件片段及其信息摘要算法MD5值;
[0027]截取所述文件片段的部分内容进行MD5计算,并将计算得到的MD5值与接收到的MD5值进行对比验证;
[0028]将验证结果返回给所述浏览器;
[0029]接收所述浏览器在查询结果为所述文件已经存在但未完成全部上传时,分片续传的相应文件片段及其MD5值。
[0030]最后一方面,本发明实施例提供了一种服务器,其包括:接收模块,用于接收浏览器发送的文件查询请求,所述文件查询请求中包含待查询文件的安全哈希算法SHAl值;其中,所述SHAl值是所述浏览器通过截取所述待查询文件的部分内容进行SHAl计算而生成的;发送模块,用于向所述浏览器返回所述文件是否存在的查询结果;所述接收模块,还用于接收所述浏览器在查询结果为不存在时上传的多个分片数据,所述分片数据包括文件片段及其信息摘要算法MD5值;验证模块,用于截取所述文件片段的部分内容进行MD5计算,并将计算得到的MD5与接收到的MD5值进行对比验证;所述发送模块,还用于将验证结果返回给所述浏览器;所述接收模块,还用于接收所述浏览器在查询结果为所述文件已经存在但未完成全部上传时,分片续传的相应文件片段及其MD5值。
[0031 ]上述技术方案具有如下有益效果:
[0032]上述技术方案基于B/S架构开发,利用浏览器本身对FileAPI的支持来完成此功能,更轻量级,开发维护成本也更低。
[0033]上述技术方案采用的是HTML5的FileAPI,是一种新技术,目前主流浏览器的支持近乎完善,在手机等移动设备上的支持也近乎完善,其使用场景更为多元化。
[0034]上述技术方案不需要额外的应用,减少了开发成本,也减少了用户的操作流程。
[0035]上述技术方案不需要浏览器对Flash的支持,采用新技术,可以使用在手机等移动设备,使用场景更多元化。
[0036]上述技术方案采用文件部分内容计算SHAl作为文件的索引,支持文件快速上传,对文件分块的部分内容进行MD5验证,保证文件数据的完整性。
[0037]上述技术方案优化SHAl和MD5取样方式,能够提升性能。
【附图说明】
[0038]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0039]图1是本发明实施例一的用于浏览器的大文件上传、续传方法的流程图;
[0040]图2A-图2B是本发明实施例的文件SHAl采样和文件分块MD5采样逻辑图;
[0041]图3是本发明实施例二的用于服务器的大文件上传、续传方法的流程图;
[0042]图4是本发明实施例三的浏览器功能框图;
[0043]图5是本发明实施例四的服务器的功能框图。
【具体实施方式】
[0044]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而