一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种文件处理方法、装置、电子设备及存储介质与流程

2023-04-01 00:29:17 来源:中国专利 TAG:


1.本公开涉及区块链技术领域,具体而言,涉及一种文件处理方法、装置、电子设备及存储介质。


背景技术:

2.目前,电子证书是信息时代个人或企业身份、技能、资质的数字化凭证,已被广泛应用于各种领域,电子证书数量越来越多,管理也会更加复杂,相关技术中,可以基于区块链技术,对电子证书进行处理,但是相关技术中的处理方法,主要是将电子证书的元数据存储在区块链上,而将电子证书存储在本地服务器,从而查询时从该服务器返回相应的电子证书,这种方式电子证书仍存储在中心化的服务器上,存在单点故障问题,当该服务器出现故障,就会导致整体功能不可用。


技术实现要素:

3.本公开实施例至少提供一种文件处理方法、装置、电子设备及存储介质。
4.第一方面,本公开实施例提供了一种文件处理方法,包括:
5.接收第一查询请求,在所述第一查询请求符合模糊查询条件时,从区块链中存储的各文件对应的元数据中,确定与所述第一查询请求匹配的目标元数据,并返回所述目标元数据,所述目标元数据用于进行目标文件的精确查询;
6.接收基于所述目标元数据而发起的第二查询请求;
7.在所述第二查询请求符合精确查询条件时,从所述区块链中存储的各文件中,确定与所述第二查询请求匹配的目标文件,并返回所述目标文件。
8.第二方面,本公开实施例还提供一种文件处理装置,包括:
9.第一接收模块,用于接收第一查询请求;
10.第一查询模块,用于在所述第一查询请求符合模糊查询条件时,从区块链中存储的各文件对应的元数据中,确定与所述第一查询请求匹配的目标元数据,并返回所述目标元数据,所述目标元数据用于进行目标文件的精确查询;
11.第二接收模块,用于接收基于所述目标元数据而发起的第二查询请求;
12.第二查询模块,用于在所述第二查询请求符合精确查询条件时,从所述区块链中存储的各文件中,确定与所述第二查询请求匹配的目标文件,并返回所述目标文件。
13.第三方面,本公开可选实现方式还提供一种电子设备,包括处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
14.第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
15.本公开实施例中,接收第一查询请求,在所述第一查询请求符合模糊查询条件时,从区块链中存储的各文件对应的元数据中,确定与所述第一查询请求匹配的目标元数据,并返回所述目标元数据,所述目标元数据用于进行目标文件的精确查询;接收基于所述目标元数据而发起的第二查询请求;在所述第二查询请求符合精确查询条件时,从所述区块链中存储的各文件中,确定与所述第二查询请求匹配的目标文件,并返回所述目标文件,这样,可以先通过模糊查询返回目标元数据,然后再通过精确查询返回目标文件,支持模糊查询和精确查询,提高了查询效率,满足用户不同的查询需求,并且文件和文件的元数据都存储在区块链中,都可以从区块链中查询获得元数据或文件,提高了安全性和可靠性,避免单点故障问题。
16.关于上述文件处理装置、电子设备、及计算机可读存储介质的效果描述参见上述文件处理方法的说明,这里不再赘述。
17.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开的技术方案。
18.为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
19.为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
20.图1示出了本公开实施例所提供的一种文件处理方法中文件存储的流程图;
21.图2示出了本公开实施例所提供的一种文件处理方法的流程图;
22.图3示出了本公开实施例所提供的另一种文件存储方法流程图;
23.图4示出了本公开实施例所提供的另一种模糊查询方法流程图;
24.图5示出了本公开实施例所提供的另一种精确查询方法的流程图;
25.图6示出了本公开实施例中所提供的文件处理方法的应用架构示意图;
26.图7示出了本公开实施例所提供的一种文件处理装置的示意图;
27.图8示出了本公开实施例所提供的一种电子设备的示意图。
具体实施方式
28.可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
29.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非
旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
30.为便于对本公开技术方案的理解,首先对本公开实施例中的技术用语加以说明:
31.区块链:区块链为利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种分布式基础架构与计算方式,例如基于智能合约,实现本公开实施例中的文件处理方法。
32.区块链是一种公开透明、不可篡改、去中心化的分布式账本,可以适用于电子证书、电子照片等文件的存储和查询等领域,区块链利用密码学技术和共识机制实现链上数据的不可篡改,并且分布式技术结合共识机制还可以保障区块链的去中心化,从而减少文件的管理成本,提高安全性。
33.区块链包括多个区块,每个区块可以包括区块头和区块主体,其中,区块头中例如包括了前一个区块的哈希值、本区块的时间戳信息等,区块主体中包括多条交易,即打包的交易,交易是存储在区块链中的实际数据,例如可以将待存储文件作为一条交易,存储在区块链中。
34.元数据:又称中介数据、中继数据,为描述数据的数据,主要是描述数据属性的信息,可以用来支持例如指示存储位置、历史数据、资源查找、文件记录等功能。例如,本公开实施例中,文件的元数据包括多个字段,并且在前端可以提供多个相应的查询字段,这样用户可以针对查询字段输入相应的取值,从而来查询所需的目标文件。
35.经研究发现,电子证书是信息时代个人或企业身份、技能、资质的数字化凭证,已被广泛应用于各种领域,例如,课程结业、应聘求职、资质备案、企业合作等各方面,便于多方进行身份认证、技能和资质证明,可以有效促进相互之间的信任关系,电子证书数量越来越多,管理也会更加复杂,对于电子证书的存储和查询仍缺乏统一有效的方法。
36.相关技术中,可以基于区块链技术,对电子证书进行处理,但是相关技术中的处理方法,主要是将电子证书的元数据存储在区块链上,而将电子证书存储在本地服务器,从而查询时从该服务器返回相应的电子证书,这种方式电子证书仍存储在中心化的服务器上,存在单点故障问题,当该服务器出现故障,就会导致整体功能不可用,例如,查询时就无法给用户返回相应的电子证书。
37.基于上述研究,本公开提供了一种文件处理方法,接收第一查询请求,在第一查询请求符合模糊查询条件时,从区块链中存储的各文件对应的元数据中,确定与第一查询请求匹配的目标元数据,并返回目标元数据,进而接收基于目标元数据而发起的第二查询请求,在第二查询请求符合精确查询条件时,从区块链中存储的各文件中,确定与第二查询请求匹配的目标文件,并返回目标文件,这样,本公开实施例中,文件和文件的元数据都可以存储在区块链中,提高安全性和可靠性,避免单点故障问题,并且还可以先通过模糊查询返回目标元数据,再基于该目标元数据进行精确查询,通过模糊查询返回目标文件,满足不同的查询需求,还提高了查询效率。
38.针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是
发明人在本公开过程中对本公开做出的贡献。
39.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
40.为便于对本实施例进行理解,首先对本公开实施例所公开的一种文件处理方法进行详细介绍,本公开实施例所提供的文件处理方法主要应用于区块链场景,区块链包括多个节点设备,该文件处理方法的执行主体可以为区块链中的节点设备,一般为具有一定计算能力的电子设备,该电子设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(user equipment,ue)、移动设备、无绳电话、个人数字助理(personal digital assistant,pda)、手持设备、计算设备、车载设备、可穿戴设备等,其中,个人数字助理是一种手持式电子设备,具有电子计算机的某些功能,可以用来管理个人信息,也可以上网浏览,收发电子邮件等,一般不配备键盘,也可以称为掌上电脑。在一些可能的实现方式中,该文件处理方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
41.下面以执行主体为服务器为例对本公开实施例提供的文件处理方法加以说明。
42.本公开实施例中,对文件处理主要包括针对文件的存储和查询,提供了更加可靠和高效的存储和相应的查询方法,因此为了更加清楚和理解本公开实施例中的文件处理方法,先对文件处理中的文件存储进行介绍。
43.参阅图1所示,为本公开实施例提供的一种文件处理方法中文件存储的流程图,该方法包括:
44.s101:获取存储请求,其中,存储请求中至少包括待存储文件。
45.本公开实施例中,待存储文件可以为各种类型的电子证书,当然也可以为其它文件,并不进行限制,可以将待存储文件上传至区块链中以进行存储,例如,用户需要将待存储文件a,存储在区块链中时,可以通过终端设备上传该待存储文件a,然后触发上传或存储操作,即发送了针对该待存储文件a的存储请求。
46.s102:将待存储文件进行分块,获得待存储文件的各文件分块。
47.通常区块链中所支持的交易的大小有限制,本公开实施例中,为了保证每次存储时,都能够完整的打包到一个交易中,因此先对待存储文件进行分块,其中,分块的方法并不进行限制,例如可以按照预设大小,进行等比例划分。
48.例如,待存储文件a的文件大小超过了交易所支持的大小,则可以将待存储文件a划分为多个文件分块,如文件分块a-1、文件分块a-2、文件分块a-3等。
49.并且,本公开实施例中,对待存储文件分块时,还需对待存储文件的元数据进行分块,获得各个文件分块对应的分块内容和元数据,分块内容主要是待存储文件被划分的文件分块对应的字节数组,文件分块的元数据主要是描述该文件分块的相关特征信息,这样便于描述各个文件分块,另外本公开实施例中还需要记录待存储文件与各文件分块之间的映射关系,各文件分块的分块顺序、分块索引等信息,以便能够从区块链中获取到该待存储文件的所有文件分块,并进行正确拼接。
50.其中,一种可能实施例中,待存储文件的元数据,可以是用户上传的,即存储请求中至少包括待存储文件和待存储文件的元数据,从而服务器针对上传的待存储文件和元数据进行分块;另一种可能实施例中,待存储文件的元数据,也可以是服务器从待存储文件中
提取出的,例如,待存储文件为电子证书,服务器接收到存储请求后,对该电子证书进行图像识别,获得该电子证书的元数据,对此本公开实施例中并不进行限制。
51.为便于存储和查询,本公开实施例中,将元数据分为多个查询字段,例如,若待存储文件为电子证书,则电子证书的各文件分块的元数据主要包括:[证书类型(certificationtype),课程名称(coursename),用户名(username),完成日期(completiondate),截止日期(expirationdate),文件名(chunkfilename),上传日期(uploaddate),文件大小(pdffilesize)]等查询字段,其中,chunkfilename这里可以理解为文件分块的文件名,可知各文件分块对应的元数据大致是相同的,例如证书类型、课程名称、用户名、完成日期、截止日期、上传日期都是与待存储文件的元数据相同的,不同文件分块的文件大小可能是相同或不同的,不同文件分块的文件名是不同的,但是应该是与待存储文件的文件名是对应的,或者说待存储文件的文件名和各文件分块的文件名有对应关系,例如,待存储文件的文件名为a,各文件分块的文件名分别为a-1、a-2、a-3等。
[0052]
s103:将各文件分块和待存储文件的元数据,存储在区块链中,并在区块链中存储待存储文件的元数据的查询字段,与待存储文件的文件标识的映射关系。
[0053]
本公开实施例中,将一个完整的待存储文件,划分为多个文件分块后,可以依次将各文件分块存储到区块链中,具体地,执行该步骤s103时,本公开提供了一种可能的实施方式:
[0054]
1)分别针对各文件分块,根据文件分块的元数据,获得文件分块的分块索引和对应的待存储文件的文件标识。
[0055]
例如,针对文件分块a-1,将文件分块a-1存储在区块链上时,获取文件分块a-1的元数据,根据文件分块a-1的元数据中chunkfilename的取值,确定出文件分块a-1对应的待存储文件的文件名a,并确定出该文件分块a-1的分块索引,例如为待存储文件a的第一个文件分块。
[0056]
2)根据待存储文件的文件标识,确定区块链是否已存储有待存储文件的元数据。
[0057]
其中,文件标识例如为待存储文件的文件名,也可以为待存储文件的哈希值等,本公开实施例中并不进行限制。
[0058]
3)在确定区块链中已存储有待存储文件的元数据时,根据分块索引,将对应的文件分块存储在区块链中。
[0059]
4)在确定区块链中未存储有待存储文件的元数据时,将待存储文件的元数据和对应的文件分块存储在区块链中,并确定待存储文件的元数据的查询字段与待存储文件的文件标识的映射关系,将待存储文件的元数据的查询字段与待存储文件的文件标识的映射关系存储在区块链中。
[0060]
本公开实施例中,在进行存储时,只将完整的待存储文件的元数据存储在区块链中即可,而无需分别存储每个文件分块的元数据,这是因为,实际上各文件分块的元数据大致是相同的,为避免重复数据上链,占用过多资源,降低存储效率,因此,本公开实施例中,判断待存储文件的元数据是否存储在区块链中即可,若没有存储,可以将待存储文件的元数据存储在区块链中。
[0061]
并且,本公开实施例中还建立了待存储文件的元数据的查询字段与待存储文件的文件标识的映射关系,由于元数据可以划分为多个查询字段,因此可以选择其中几个查询
字段来建立与文件标识的映射关系,例如选择其中关键的查询字段,便于后续快速查询,例如,本公开实施例中,该映射关系采用哈希表来存储,选择的查询字段为certificationtype、coursename和username,则可以分别用哈希表来存储certificationtype与文件标识的映射关系,coursename与文件标识的映射关系,username与文件标识的映射关系。
[0062]
这样,本公开实施例中,在将待存储文件存储在区块链中时,先将待存储文件进行分块,从而可以分别将各文件分块存储在区块链中,并且支持将待存储文件和待存储文件的元数据,都存储到区块链中,提高了文件的安全性和可靠性,降低了对文件的管理成本,并且还同时确定并存储文件标识与元数据的查询字段的映射关系,提高了文件查询的效率,节省查询时间。
[0063]
基于本公开实施例中提供的文件存储的逻辑,可知区块链中存储有各文件的文件标识与元数据的查询字段的映射关系,文件标识与完整的元数据的映射关系,以及各文件和对应的元数据等,进而本公开实施例中还相应提供了更加高效的文件查询逻辑,具体地,参见图2所示,为本公开实施例提供的一种文件处理方法的流程图,该方法包括:
[0064]
s201:接收第一查询请求,在第一查询请求符合模糊查询条件时,从区块链中存储的各文件对应的元数据中,确定与第一查询请求匹配的目标元数据,并返回目标元数据,目标元数据用于进行目标文件的精确查询。
[0065]
例如,终端设备通过交互界面,在交互界面中展示多个查询字段对应的输入框,通常用户在需要查询目标文件时,可能只知道该目标文件其中的部分信息,用户可以根据所知道的信息,针对查询字段,在对应的输入框中输入查询字段的取值,若不知道某个查询字段的取值,可以不输入,本公开实施例中认为未输入的查询字段的取值为预设的指定字符,该指定字符可以理解为通配符,通配符是一种特殊语句,例如主为星号(*)或问号(?),主要用来模糊查询,当然也可以就直接认为未输入的查询字段的取值为空。
[0066]
s202:接收基于目标元数据而发起的第二查询请求。
[0067]
本公开实施例中,通过模糊查询返回的目标元数据,用户可以获知各文件比较详细的信息,进而可以基于返回的各文件的目标元数据,发起第二次查询请求,来进行精确查询,以获得所需的目标文件。
[0068]
s203:在第二查询请求符合精确查询条件时,从区块链中存储的各文件中,确定与第二查询请求匹配的目标文件,并返回目标文件。
[0069]
进一步地,本公开实施例中,若第一查询请求就符合精确查询条件,则可以直接进行精确查询以获得匹配的第一目标文件,具体本公开提供了一种可能的实施方式:在第一查询请求符合精确查询条件时,从区块链中存储的各文件中,确定与第一查询请求匹配的第一目标文件,并返回第一目标文件。
[0070]
本公开实施例中,接收第一查询请求,在第一查询请求符合模糊查询条件时,从区块链中存储的各文件对应的元数据中,确定与第一查询请求匹配的目标元数据,并返回目标元数据,进而可以接收基于目标元数据而发起的第二查询请求,在第二查询请求符合精确查询条件时,从区块链中存储的各文件中,确定与第二查询请求匹配的目标文件,并返回目标文件,这样,可以先通过模糊查询获得目标元数据,再基于目标元数据进行精确查询,获得最终所需的目标文件,支持模糊查询和精确查询两种查询机制,提高了查询效率,并且
模糊查询和精确查询时,都是从区块链中进行查询并获得目标元数据和目标文件,即文件和文件的元数据都是存储在区块链中,避免了单点故障问题,提高了安全性和可靠性。
[0071]
基于上述实施例中,本公开实施例中,支持模糊查询和精确查询,从而返回不同的查询结果,下面对这两种情况分别进行说明。
[0072]
第一种:模糊查询。
[0073]
针对上述步骤s201中,在第一查询请求符合模糊查询条件时,从区块链中存储的各文件对应的元数据中,确定出与第一查询请求匹配的目标元数据,本公开提供了一种可能的实施方式:
[0074]
1)在第一查询请求符合模糊查询条件时,根据第一查询请求中包括的表征元数据的查询字段的取值,以及区块链中存储的查询字段与文件标识的映射关系,从区块链中确定出匹配的第一目标文件标识。
[0075]
例如,查询字段有多个,可以根据查询字段的类型,优先基于具有标志性的查询字段进行匹配,又例如还可以优先基于非日期类型的查询字段进行匹配,然后再基于日期类型的查询字段进行匹配,可以提高匹配效率。
[0076]
2)根据确定出的第一目标文件标识,从区块链中获取第一目标文件标识对应的目标元数据。
[0077]
本公开实施例中,各文件和对应的元数据都存储在区块链中,从区块链中进行查询时,可以通过输入的查询字段的取值,使用查询字段与文件标识的映射关系进行匹配,相较于一次性获取存储的所有文件进行逐个遍历比较,使用该映射关系进行匹配查询,可以降低查询的时间复杂度,提高查询效率,大大提高了区块链在文件存储和查询场景下的可用性。
[0078]
具体地,针对上述步骤:在第一查询请求符合模糊查询条件时,根据第一查询请求中包括的表征元数据的查询字段的取值,以及区块链中存储的查询字段与文件标识的映射关系,从区块链中确定出匹配的第一目标文件标识,本公开提供了一种可能的实施方式:
[0079]
1)在符合模糊查询条件时,确定第一查询字段的取值是否非空且非指定字符,其中,第一查询字段为预设有目标标签的查询字段,目标标签用于表征查询优先级。
[0080]
其中,本公开实施例中模糊查询条件例如为第一查询请求中包括模糊查询标识,例如本公开实施例中,可以在前端提供模糊查询和精确查询的选择项,用户可以根据需求而进行选择,如用户选择模糊查询,则在前端相应展示模糊查询对应的各个查询字段,进而用户针对展示的各个查询字段,输入相应的取值。
[0081]
又例如,本公开实施例中模糊查询条件为,第一查询请求中取值非空且非指定字符的查询字段的个数或类型符合模糊查询条件,如模糊查询条件中要求针对这三个查询字段[certificationtype,coursename,username],用户需要至少输入其中一个查询字段的取值,这样,服务器接收到第一查询请求后,判断符合模糊查询条件,则进行模糊查询。
[0082]
其中,本公开实施例中还可以预设设置具有目标标签的查询字段,具有目标标签的查询字段,可以理解为关键查询字段或重要查询字段,例如,从数据分布的角度来看,可能一个电子证书的证书类型(certificationtype)和课程名称(coursename)的取值就有多个情况,而每个电子证书对应的用户名(username)通常是不一样的,因此,通过证书类型和课程名称,过滤掉的电子证书较少,而通过用户名可以过滤掉更多的电子证书,因此,可以
将用户名设置为具有目标标签的查询字段。
[0083]
2)在第一查询字段的取值非空且非指定字符时,根据第一查询字段的取值,以及区块链中第一查询字段与文件标识的映射关系,从区块链中确定出与第一查询字段的取值匹配的第一文件标识。
[0084]
例如,第一查询字段为用户名,根据区块链中存储的用户名与文件标识的映射关系,获取到所有与该用户名的取值对应的第一文件标识。
[0085]
本公开实施例中,在查询时,可以先根据有目标标签的查询字段,即第一查询字段进行匹配,可以先过滤掉区块链中更多不匹配的文件,提高效率。
[0086]
3)根据确定出的第一文件标识,从区块链中获取第一文件标识对应的第一元数据。
[0087]
例如,根据用户名,筛选出匹配的第一文件标识有n个,然后遍历这n个第一文件标识,从区块链中分别获取每个第一文件标识对应的第一元数据。
[0088]
4)将第一元数据与第一查询请求中第二查询字段的取值进行匹配,在确定匹配时,将第一文件标识确定为第一目标文件标识,其中,第二查询字段为非预设有目标标签的查询字段。
[0089]
本公开实施例中,将各个第一元数据与第二查询字段的取值进行匹配,可以理解进行匹配的第二查询字段的取值不为空并且不为指定字符,若第二查询字段的取值为空或为指定字符,则无需与其匹配了,从而在第一元数据与第二查询字段的取值也匹配,则可以将第一文件标识确定为第一目标文件标识,进一步地,在第一元数据与第二查询字段的取值不匹配时,则可以过滤掉不匹配的第一文件标识,从而就可以从n个第一文件标识中,筛选出匹配的第一目标文件标识。
[0090]
进一步地,确定第一查询字段的取值是否非空且非指定字符之后,针对第一查询字段的取值为空或指定字符的情况下,本公开实施例中,还提供了几种可能的实施方式:
[0091]
一种可能实施方式中,在第一查询字段的取值为空或指定字符时,根据第二查询字段的取值,以及区块链中所述第二查询字段与文件标识的映射关系,从区块链中确定出与第二查询字段的取值匹配的第一目标文件标识。
[0092]
即本公开实施例中,优先以第一查询字段进行文件标识匹配,第一查询字段的取值为空或指定字符时,就以第二查询字段进行文件标识匹配和筛选,从而确定出匹配的第一目标文件标识。
[0093]
另一种可能实施方式中,在第一查询字段的取值为空或指定字符,并第二查询字段有多个时,根据多个第二查询字段的其中一个第二查询字段的取值,以及区块链中其中一个第二查询字段与文件标识的映射关系,从区块链中确定出与其中一个第二查询字段的取值匹配的第二文件标识;根据第二文件标识,从区块链中获取第二文件标识对应的第二元数据;将第二元数据与多个第二查询字段中其它第二查询字段的取值进行匹配,在确定匹配时,将第二文件标识确定为第一目标文件标识。
[0094]
本公开实施例中,第一查询字段的取值为空或为指定字符,并且取值非空且非指定字符的第二查询字段有多个时,可以从中任选一个第二查询字段,进行文件标识匹配,或者本公开实施例中,例如在存储时,只针对元数据的其中几个查询字段建立了与文件标识的映射关系,则选择有映射关系的第二查询字段,进行文件标识的匹配,然后再基于第二元
数据与其它第二查询字段进行匹配,筛选出匹配的第一目标文件标识。
[0095]
进而,在模糊查询场景下,可以根据确定出的第一目标文件标识,从区块链中获取第一目标文件标识对应的目标元数据。
[0096]
这样,本公开实施例中,当用户不知道所需查询的文件的完整的元数据时,可以使用模糊查询,用户输入部分查询字段的取值,可以从区块链上返回所有匹配到的目标元数据,进而用户可以根据模糊查询的查询结果,再进行第二次精确查询,通过精确查询,可以从区块链上返回匹配的目标文件。
[0097]
进一步地,若第一查询请求中还包括是否要求非过期文件,则本公开实施例中还提供了一种可能的实施方式,在第一查询请求中要求非过期文件时,过滤掉过期的第一目标文件标识。
[0098]
实际中,例如某些电子证书的文件,是有一定的有效期的,例如初领的驾驶证有限定的有效期,到期后用户会再次换领一个驾驶证,这种情况,在区块链中就会存储有该用户的两个驾驶证文件,可以支持用户选择是否要求非过期文件,例如在交互界面中,提供是否要求非过期文件的选择框,若用户选择要求非过期文件,则会根据元数据中截止日期,筛选出未超过截止日期的目标文件的第一目标文件标识,若用户未要求非过期文件,则查找到匹配的第一目标文件标识即可。
[0099]
第二种:精确查询。
[0100]
针对上述步骤s203:在第二查询请求符合精确查询条件时,从区块链中存储的各文件中,确定与第二查询请求匹配的目标文件,本公开提供了一种可能的实施方式:
[0101]
1)在第二查询请求符合精确查询条件时,根据第二查询请求中包括的表征元数据的查询字段的取值,以及区块链中存储的查询字段与文件标识的映射关系,从区块链中确定出匹配的第二目标文件标识。
[0102]
2)根据确定出的第二目标文件标识,从区块链中获取第二目标文件标识对应的目标文件。
[0103]
这样,可以进一步基于目标元数据进行精确查询,根据查询字段与文件标识的映射关系,从区块链中进行查询,提高了查询效率。
[0104]
具体地,针对上述步骤:在第二查询请求符合精确查询条件时,根据第二查询请求中包括的表征元数据的查询字段的取值,以及区块链中存储的查询字段与文件标识的映射关系,从区块链中确定出匹配的第二目标文件标识,本公开提供了一种可能的实施方式:
[0105]
1)在符合精确查询条件,并在第二查询请求中为文件名的查询字段的取值非空且非指定字符时,根据为文件名的查询字段的取值,从区块链中获取为文件名的查询字段的取值对应的元数据。
[0106]
其中,例如,精确查询条件为第二查询请求中包括精确查询标识,例如用户选择精确查询,则在前端相应展示精确查询对应的各个查询字段,进而用户针对展示的各个查询字段,输入相应的取值,而进行精确查询。
[0107]
又例如,精确查询条件为,第二查询请求中取值非空且非指定字符的查询字段的个数或类型符合精确查询条件,如精确查询条件中要求针对这三个查询字段[certificationtype,coursename,username],用户需要至少输入coursename和username的取值。
[0108]
本公开实施例中,区块链中存储有各个文件以及各个文件对应的元数据,并且为区分各个文件,各个文件的文件名是不同的,因此在进行精确查询时,可以先根据输入的文件名来进行查询,例如,为文件名的查询字段的取值为小张_a,则从区块链中查询小张_a对应的元数据。
[0109]
进一步地,若根据为文件名的查询字段的取值,从区块链中未匹配到对应的元数据,则可以认为区块链中未存储有该文件名对应的文件,可以返回未查询到文件的提示信息。
[0110]
2)将为文件名的查询字段的取值对应的元数据,与第二查询请求中除为文件名的查询字段之外的其它查询字段的取值进行匹配,在确定匹配时,将为文件名的查询字段的取值对应的元数据的文件标识确定为第二目标文件标识。
[0111]
为进一步提高准确性,查询到文件名对应的元数据后,将该元数据与第二查询请求中其它查询字段的取值进行匹配,具体地,本公开提供了一种可能的实施方式,先与第二查询请求中非日期类型的查询字段的取值进行匹配,匹配一致后,再与第二查询请求中日期类型的查询字段的取值进行匹配,若均满足匹配条件,则将为文件名的查询字段的取值对应的文件标识,确定为第二目标文件标识,即认为从区块链中查询到了对应的目标文件,当然,由于区块链中不同文件的文件名不同,基于文件名已经匹配到了唯一的元数据,数据量不会很大,因此在与其它查询字段的取值匹配时,可以不区分日期类型和非日期类型,分别与其它查询字段的取值进行匹配即可,对此,本公开实施例中并不进行限制。
[0112]
进一步地,在符合精确查询条件时,还包括:在第二查询请求中为文件名的查询字段的取值为空或指定字符时,根据第二查询请求中除为文件名的查询字段之外的其它查询字段的取值,从区块链中确定出匹配的第二目标文件标识。
[0113]
在精确查询过程中,若文件名为空或为指定字符,基于其它查询字段的取值从区块链中进行查询,由于区块链中通常存储的文件数量是很大的,而基于非日期类型的查询字段可以先过滤掉更多的不符合的文件,因此为了进一步提高查询效率,可以先基于非日期类型的查询字段进行查询,再基于日期类型的查询字段进行过滤,具体本公开提供了一种可能的实施方式:
[0114]
1)根据非日期类型的查询字段的取值,从区块链中获取对应的第三文件标识,其中,第二查询请求中包括非日期类型的查询字段和日期类型的查询字段。
[0115]
例如,非日期类型的查询字段为certificationtype,coursename,username,并且在基于非日期类型的查询字段的取值进行匹配时,可以先基于预设有目标标签的查询字段进行匹配,例如先根据username的取值,获取对应的第三文件标识,然后基于第三文件标识对应的第三元数据,与certificationtype,coursename的取值进行匹配,过滤掉第三文件标识中与certificationtype,coursename的取值不匹配的。
[0116]
2)根据第三文件标识,从区块链中获取第三文件标识对应的第三元数据。
[0117]
3)将第三元数据与日期类型的查询字段的取值进行匹配,在确定匹配时,将第三文件标识确定为第二目标文件标识。
[0118]
例如,日期类型的查询字段为completiondate,expirationdate,uploaddate,遍历各第三文件标识,判断第三文件标识对应的第三元数据是否满足与日期类型的查询字段的匹配条件,若均匹配,则可以将匹配的第三文件标识确定为第二目标文件标识。
[0119]
其中,与日期类型的查询字段的匹配条件,例如为大于等于日期类型的查询字段的取值,例如,uploaddate查询字段,筛选出大于等于该uploaddate的取值的,即可以筛选出晚于输入的上传日期的文件。
[0120]
当然也可以根据实际情况和需求,设置其它与日期类型的查询字段的匹配条件,例如匹配条件还可以为小于第二查询请求中日期类型的查询字段的取值。
[0121]
这样,在为文件名的查询字段的取值为空为指定字符时,根据非日期类型的查询字段和日期类型的查询字段进行匹配,虽然精确查询,已经匹配到了符合非日期类型的查询字段和日期类型的查询字段的第二目标文件标识,但是也可能有多个第二目标文件标识的情况,例如,小张的身份证可能因为丢失或过期,办理了多张身份证,这时可能会匹配到小张的多张身份证的文件,而精确查询,用户希望查找到最想要的一个文件,针对这种情况,本公开实施例中还提供了一种可能的实施方式,在第二目标文件标识有多个时,筛选出完成日期最晚的第二目标文件标识,这样,可以返回最近取得的文件给用户,进一步提高查询准确性。
[0122]
进而在精确查询场景下,根据确定出的第二目标文件标识,从区块链中获取第二目标文件标识对应的目标文件,本公开提供了一种可能实施方式,根据第二目标文件标识,从区块链中获取第二目标文件标识对应的各目标文件分块;将获取到的各目标文件分块进行拼接,获得目标文件。
[0123]
本公开实施例中,若在区块链中文件是分块存储,则可以获取对应的各目标文件分块,并按照各目标文件分块的次序进行拼接,以获得完整的目标文件,当然若在区块链中文件是完整存储的,则可以直接根据第二目标文件标识,获取到对应的目标文件并返回。
[0124]
进一步地,本公开实施例中,在第二查询请求中要求非过期文件时,过滤掉过期的第二目标文件标识,以满足用户所需。
[0125]
这样,本公开实施例中,当用户知道相对较完整的查询信息时,或者基于模糊查询返回的各目标元数据,可以针对各查询字段,输入更多的查询字段的取值,则就可以使用精确查询来直接获得目标文件。
[0126]
另外,需要说明的是,在第一查询请求符合精确查询条件时,根据第一查询请求进行精确查询确定第一目标文件的实施方式,与上述根据第二查询请求进行精确查询的实施方式相同,这里就不再进行赘述了。
[0127]
下面采用具体的应用场景进行说明。以文件标识为文件名,并且查询字段与文件标识的映射关系采用哈希表的形式为例,本公开实施例中提供了高效的在区块链中文件存储和查询方法,并且查询过程还支持模糊查询和精确查询,下面分别对本公开实施例中存储方法、模糊查询方法、精确查询方法进行说明,并且本公开实施例中模糊查询方法和精确查询方法为两个独立算法,并不仅限于先进行第一查询请求进行模糊查询,再基于第二查询请求进行精确查询,也可以仅进行模糊查询,或者直接进行精确查询,因此为便于说明和描述,不区分第一查询请求或第二查询请求,而统一采用查询请求对模糊查询方法和精确查询方法进行说明。
[0128]
第一部分:存储方法,本公开实施例中,对待存储文件划分为各文件分块,获得各文件分块和各文件分块的元数据,以文件分块的元数据包括[certificationtype,coursename,username,completiondate,expirationdate,chunk filename,uploaddate,
pdffilesize]为例,然后针对每个文件分块,可以依次将每个文件分块存储至区块链中,以其中一个文件分块的存储过程为例进行说明。
[0129]
参阅图3所示,为本公开实施例中另一种文件存储方法流程图,该方法包括:
[0130]
s301:根据文件分块的元数据,获得对应的分块索引和待存储文件的文件名。
[0131]
例如,从文件分块的元数据的其中一个字段chunkfilename,解析出完整的待存储文件的文件名filename和该文件分块的分块索引。
[0132]
s302:根据文件名判断区块链是否已存储有待存储文件的元数据,若是,则执行步骤s305,否则,则执行步骤s303。
[0133]
s303:将待存储文件的元数据存储在区块链中。
[0134]
s304:分别用哈希表存储元数据的查询字段与文件名的映射关系。
[0135]
例如,本公开实施例中,分别确定certificationtype,coursename、username与文件名的映射关系的哈希表,即可以建立三个哈希表,便于可以基于哈希表快速查询。
[0136]
s305:将文件分块存储在区块链中。
[0137]
本公开实施例中,支持待存储文件和元数据都存储在区块链中,降低文件管理的成本,提高文件的安全性和可靠性,并且使用哈希表来存储查询字段与文件名的映射关系,可以提高对应查询的效率和更细粒度的查询。
[0138]
第二部分:模糊查询方法。本公开实施例中,当用户只知道要查询的文件的部分信息时,可以先基于模糊查询进行查询,为了保证模糊查询的查询效果,可以限定模糊查询条件,例如,模糊查询条件为查询请求中包括查询字段的取值和是否要求非过期文件,其中,查询字段的取值至少包括[certificationtype,coursename,username]中的一个,即用户需要输入这三个查询字段中至少一个查询字段的取值,另外两个查询字段的取值可以为指定字符或为空。
[0139]
则参阅图4所示,为本公开实施例中另一种模糊查询方法流程图,该方法包括:
[0140]
s401:判断第一查询字段的取值是否为指定字符或为空,若是,则执行步骤s403,否则,则执行步骤s402。
[0141]
其中,第一查询字段为预设有目标标签的查询字段,例如第一查询字段为username。
[0142]
另外本公开实施例中,为便于查询和匹配,可以先初始化一个结果列表,该结果列表中用于存储匹配的文件名。
[0143]
s402:从第一查询字段对应的哈希表中,确定出与第一查询字段的取值匹配的第一文件名。
[0144]
s403:从第二查询字段对应的哈希表中,确定出与第二查询字段的取值匹配的第二文件名。
[0145]
其中,第二查询字段为非预设有目标标签的查询字段,较佳的,例如第二查询字段为certificationtype或coursename。
[0146]
s404:遍历第一文件名或第二文件名。
[0147]
s405:从区块链中获取第一文件名对应的第一元数据,或第二文件名对应的第二元数据。
[0148]
s406:判断第一元数据或第二元数据与其它第二查询字段的取值是否匹配,若是,
则执行步骤s407,否则,则返回继续执行步骤s404。
[0149]
s407:将匹配的第一文件名或第二文件名,作为目标文件名放到结果列表中。
[0150]
s408:判断是否要求非过期文件,若是,则执行步骤s409,否则,则执行步骤s410。
[0151]
s409:过滤过期的目标文件名。
[0152]
s410:获得目标文件名对应的目标元数据并返回。
[0153]
本公开实施例中,可以支持模糊查询,并且在查询时优先从具有目标标签的查询字段对应的哈希表,确定出匹配的文件名,再与其它查询字段进行匹配,可以尽量在初始阶段减少需要比较的文件个数,提高匹配效率,从而从区块链中返回匹配的目标元数据,便于用户根据返回的目标元数据,进行第二次精确查询,提高查询效率。
[0154]
第三部分:精确查询方法。本公开实施例中,当用户获得模糊查询返回的目标元数据或者用户明确知道要查询的文件的较完整信息时,可以使用精确查询进行查询,以返回目标文件给用户。本公开实施例中,精确查询条件,例如为查询请求中包括多个查询字段的取值和是否要求非过期文件,其中,多个查询字段包括[certificationtype,coursename,username,completiondate,expirationdate,filename,uploaddate],并且精确查询中要求coursename和username的取值不为空或指定字符,其它查询字段的取值均可以为空或指定字符。
[0155]
则参阅图5所示,为本公开实施例中另一种精确查询方法的流程图,该方法包括:
[0156]
s501:查询请求中文件名查询字段的取值是否为指定字符或为空,若是,则执行步骤s504,否则,则执行步骤s502。
[0157]
本公开实施例中,在精确查询时,也初始化一个结果列表,用于存储匹配的文件名。
[0158]
s502:根据文件名查询字段的取值,从区块链中获取对应的元数据。
[0159]
进一步地,若从区块链中未获取到文件名查询的取值对应的元数据,则可以认为未存储该文件名的文件,可以向用户返回未查询到提示信息。
[0160]
s503:确定是否与查询请求中其它查询字段的取值匹配,在确定匹配时,将文件名查询字段的取值确定为目标文件名并放到结果列表中。
[0161]
由于区块链不同文件的文件名不同,因此,根据查询请求中文件名查询字段的取值,可以获取到对应的一个文件的元数据,进而将该元数据与查询请求中其它查询字段的取值进行匹配,若均匹配,则该文件名查询字段的取值即为目标文件名,可以放到结果列表中,若有一个不匹配,则向用户返回未查询到提示信息。
[0162]
s504:根据非日期类型的查询字段的取值进行匹配。
[0163]
例如,非日期类型的查询字段包括certificationtype、coursename和username。
[0164]
s505:获得匹配的结果列表。
[0165]
具体地,本公开实施例中,类似于模糊查询的过程,可以先根据非日期类型的查询字段中第一查询字段对应的哈希表,获得对应的第一文件标识,再与非日期类型的其它查询字段进行匹配,从而获得目标文件名,将获得的目标文件名放到结果列表中,即获得匹配的结果列表。
[0166]
s506:与日期类型的查询字段的取值进行匹配。
[0167]
例如,日期类型的查询字段包括completiondate、expirationdate和uploaddate。
[0168]
s507:筛选出完成日期最晚的目标文件名。
[0169]
例如,根据匹配的各目标文件名对应的元数据中completiondate的取值,找到最近完成的目标文件名。
[0170]
s508:判断是否要求非过期文件,若是,则执行步骤s509,否则,则执行步骤s610。
[0171]
s509:过滤掉过期的目标文件名。
[0172]
s610:根据目标文件名,从区块链中获取对应的各目标文件分块,并进行拼接获得目标文件后返回。
[0173]
本公开实施例中,可以支持精确查询,根据哈希表从区块链中进行查询,先根据文件名进行匹配,然后再基于非日期类型的查询字段、日期类型的查询字段进行筛选匹配,从而可以查询到匹配的目标文件,并且可以返回满足用户要求的最近取得的目标文件,提高了匹配效率,降低查询时间。
[0174]
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
[0175]
下面采用具体应用场景进行说明。参阅图6所示,为本公开实施例中文件处理方法的应用架构示意图,如图6所示,本公开实施例中的文件处理方法可以应用于区块链场景,区块链包括多个节点,用户可以通过存储与查询服务,实现在区块链中文件的存储和查询,存储与查询服务可以为提供该功能的服务器或系统等,具体地:
[0176]
1)用户可以上传待存储文件,从而存储与检索服务可以将待存储文件和待存储文件的元数据,都存储在区块链中。
[0177]
其中,待存储文件的元数据,可以是用户上传的,也可以是存储与检索服务从待存储文件中提取到的,对此本公开实施例中并不进行限制。
[0178]
2)用户输入查询字段的取值,发起第一查询请求,进而在第一查询请求符合模糊查询条件时,从区块链中进行模糊查询而确定出匹配的目标元数据,将目标元数据返回给用户。
[0179]
3)用户根据目标元数据,输入查询字段的取值,发起第二查询请求,进而在第二查询请求符合精确查询条件时,从区块链中进行精确查询,找到匹配的目标文件,将目标文件返回给用户。
[0180]
这样,本公开实施例中,同时在区块链中存储文件和文件的元数据,并且在查询时,用户可以根据需求,进行模糊查询和精确查询,模糊查询返回目标元数据,可以使得用户获知更详细的元数据,进而便于用户基于目标元数据再次发起第二查询请求以进行精确查询,查询更加灵活,满足不同查询需求,提高查询效率。
[0181]
基于同一发明构思,本公开实施例中还提供了与文件处理方法对应的文件处理装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述文件处理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
[0182]
参阅图7所示,为本公开实施例提供的一种文件处理装置的示意图,该装置包括:
[0183]
第一接收模块71,用于接收第一查询请求;
[0184]
第一查询模块72,用于在所述第一查询请求符合模糊查询条件时,从区块链中存储的各文件对应的元数据中,确定与所述第一查询请求匹配的目标元数据,并返回所述目
标元数据,所述目标元数据用于进行目标文件的精确查询;
[0185]
第二接收模块73,用于接收基于所述目标元数据而发起的第二查询请求;
[0186]
第二查询模块74,用于在所述第二查询请求符合精确查询条件时,从所述区块链中存储的各文件中,确定与所述第二查询请求匹配的目标文件,并返回所述目标文件。
[0187]
一种可选的实施方式中,在所述第一查询请求符合模糊查询条件时,从区块链中存储的各文件对应的元数据中,确定出与所述第一查询请求匹配的目标元数据时,第一查询模块72用于:
[0188]
在所述第一查询请求符合模糊查询条件时,根据所述第一查询请求中包括的表征元数据的查询字段的取值,以及所述区块链中存储的查询字段与文件标识的映射关系,从所述区块链中确定出匹配的第一目标文件标识;
[0189]
根据确定出的所述第一目标文件标识,从所述区块链中获取所述第一目标文件标识对应的目标元数据。
[0190]
一种可选的实施方式中,根据所述第一查询请求中包括的表征元数据的查询字段的取值,以及所述区块链中存储的查询字段与文件标识的映射关系,从所述区块链中确定出匹配的第一目标文件标识时,第一查询模块72用于:
[0191]
确定第一查询字段的取值是否非空且非指定字符,其中,所述第一查询字段为预设有目标标签的查询字段,所述目标标签用于表征查询优先级;
[0192]
在所述第一查询字段的取值非空且非指定字符时,根据所述第一查询字段的取值,以及所述区块链中所述第一查询字段与文件标识的映射关系,从所述区块链中确定出与所述第一查询字段的取值匹配的第一文件标识;
[0193]
根据确定出的所述第一文件标识,从所述区块链中获取所述第一文件标识对应的第一元数据;将所述第一元数据与所述第一查询请求中第二查询字段的取值进行匹配,在确定匹配时,将所述第一文件标识确定为所述第一目标文件标识,其中,所述第二查询字段为非预设有目标标签的查询字段;
[0194]
在所述第一查询字段的取值为空或指定字符时,根据所述第二查询字段的取值,以及所述区块链中所述第二查询字段与文件标识的映射关系,从所述区块链中确定出与所述第二查询字段的取值匹配的第一目标文件标识。
[0195]
一种可选的实施方式中,根据所述第二查询字段的取值,以及所述区块链中所述第二查询字段与文件标识的映射关系,从所述区块链中确定出与所述第二查询字段的取值匹配的第一目标文件标识时,第一查询模块72用于:
[0196]
在所述第二查询字段有多个时,根据多个所述第二查询字段的其中一个第二查询字段的取值,以及所述区块链中所述其中一个第二查询字段与文件标识的映射关系,从所述区块链中确定出与所述其中一个第二查询字段的取值匹配的第二文件标识;
[0197]
根据所述第二文件标识,从所述区块链中获取所述第二文件标识对应的第二元数据;
[0198]
将所述第二元数据与多个所述第二查询字段中其它第二查询字段的取值进行匹配,在确定匹配时,将所述第二文件标识确定为所述第一目标文件标识。
[0199]
一种可选的实施方式中,在所述第二查询请求符合精确查询条件时,从所述区块链中存储的各文件中,确定出与所述第二查询请求匹配的目标文件时,第二查询模块74用
于:
[0200]
在所述第二查询请求符合精确查询条件时,根据所述第二查询请求中包括的表征元数据的查询字段的取值,以及所述区块链中存储的查询字段与文件标识的映射关系,从所述区块链中确定出匹配的第二目标文件标识;
[0201]
根据确定出的所述第二目标文件标识,从所述区块链中获取所述第二目标文件标识对应的目标文件。
[0202]
一种可选的实施方式中,根据所述第二查询请求中包括的表征元数据的查询字段的取值,以及所述区块链中存储的查询字段与文件标识的映射关系,从所述区块链中确定出匹配的第二目标文件标识时,第二查询模块74用于:
[0203]
在所述第二查询请求中为文件名的查询字段的取值非空且非指定字符时,根据所述为文件名的查询字段的取值,从所述区块链中获取所述为文件名的查询字段的取值对应的元数据;
[0204]
将所述为文件名的查询字段的取值对应的元数据,与所述第二查询请求中除所述为文件名的查询字段之外的其它查询字段的取值进行匹配,在确定匹配时,将所述为文件名的查询字段的取值对应的文件标识确定为所述第二目标文件标识;
[0205]
在所述第二查询请求中为文件名的查询字段的取值为空或指定字符时,根据所述第二查询请求中除所述为文件名的查询字段之外的其它查询字段的取值,从所述区块链中确定出匹配的第二目标文件标识。
[0206]
一种可选的实施方式中,根据所述第二查询请求中除所述为文件名的查询字段之外的其它查询字段的取值,从所述区块链中确定出匹配的第二目标文件标识时,第二查询模块74用于:
[0207]
根据非日期类型的查询字段的取值,从所述区块链中获取对应的第三文件标识,其中,所述第二查询请求中包括非日期类型的查询字段和日期类型的查询字段;
[0208]
根据所述第三文件标识,从所述区块链中获取所述第三文件标识对应的第三元数据;
[0209]
将所述第三元数据与所述日期类型的查询字段的取值进行匹配,在确定匹配时,将所述第三文件标识确定为所述第二目标文件标识。
[0210]
一种可选的实施方式中,将所述第三文件标识确定为所述第二目标文件标识之后,第二查询模块74还用于:
[0211]
在所述第二目标文件标识有多个时,筛选出完成日期最晚的第二目标文件标识。
[0212]
一种可选的实施方式中,根据确定出的所述第二目标文件标识,从所述区块链中获取所述第二目标文件标识对应的目标文件时,第二查询模块74用于:
[0213]
根据所述第二目标文件标识,从所述区块链中获取所述第二目标文件标识对应的各目标文件分块;
[0214]
将获取到的所述各目标文件分块进行拼接,获得所述目标文件。
[0215]
一种可选的实施方式中,第一查询模块72还用于:在所述第一查询请求中要求非过期文件时,过滤掉过期的所述第一目标文件标识。
[0216]
第二查询模块74还用于:在所述第二查询请求中要求非过期文件时,过滤掉过期的所述第二目标文件标识。
[0217]
一种可选的实施方式中,还包括:存储模块75用于:
[0218]
获取存储请求,其中,所述存储请求中至少包括待存储文件;
[0219]
将所述待存储文件进行分块,获得所述待存储文件的各文件分块;
[0220]
将所述各文件分块和所述待存储文件的元数据,存储在所述区块链中,并在所述区块链中存储所述待存储文件的元数据的查询字段,与所述待存储文件的文件标识的映射关系。
[0221]
一种可选的实施方式中,所述将所述各文件分块和所述待存储文件的元数据,存储在所述区块链中,并在所述区块链中存储所述待存储文件的元数据的查询字段,与所述待存储文件的文件标识的映射关系时,存储模块75用于:
[0222]
分别针对所述各文件分块,根据所述文件分块的元数据,获得所述文件分块的分块索引和对应的所述待存储文件的文件标识;
[0223]
根据所述待存储文件的文件标识,确定所述区块链是否已存储有所述待存储文件的元数据;
[0224]
在确定所述区块链中已存储有所述待存储文件的元数据时,根据所述分块索引,将对应的文件分块存储在所述区块链中;
[0225]
在确定所述区块链中未存储有所述待存储文件的元数据时,将所述待存储文件的元数据和对应的文件分块存储在所述区块链中,并确定所述待存储文件的元数据的查询字段与所述待存储文件的文件标识的映射关系,将所述待存储文件的元数据的查询字段与所述待存储文件的文件标识的映射关系存储在所述区块链中。
[0226]
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
[0227]
本公开实施例还提供了一种电子设备,如图8所示,为本公开实施例提供的电子设备结构示意图,包括:
[0228]
处理器81和存储器82;所述存储器82存储有处理器81可执行的机器可读指令,处理器81用于执行存储器82中存储的机器可读指令,所述机器可读指令被处理器81执行时,处理器81执行下述步骤:
[0229]
接收第一查询请求,在所述第一查询请求符合模糊查询条件时,从区块链中存储的各文件对应的元数据中,确定与所述第一查询请求匹配的目标元数据,并返回所述目标元数据,所述目标元数据用于进行目标文件的精确查询;
[0230]
接收基于所述目标元数据而发起的第二查询请求;
[0231]
在所述第二查询请求符合精确查询条件时,从所述区块链中存储的各文件中,确定与所述第二查询请求匹配的目标文件,并返回所述目标文件。
[0232]
上述存储器82包括内存821和外部存储器822;这里的内存821也称内存储器,用于暂时存放处理器81中的运算数据,以及与硬盘等外部存储器822交换的数据,处理器81通过内存821与外部存储器822进行数据交换。
[0233]
上述指令的具体执行过程可以参考本公开实施例中所述的文件处理方法的步骤,此处不再赘述。
[0234]
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的文件处理方法的
步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
[0235]
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的文件处理方法的步骤,具体可参见上述方法实施例,在此不再赘述。
[0236]
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
[0237]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0238]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0239]
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0240]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0241]
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献