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

一种文件上传方法及文件上传系统与流程

2022-11-30 11:10:44 来源:中国专利 TAG:


1.本发明涉及互联网技术领域,特别是涉及一种文件上传方法、文件上传系统、计算机可读存储介质和计算机设备。


背景技术:

2.相关技术中,前端服务上传文件至存储服务器通常需要传输两次文件,例如由前端调用文件上传接口将文件传输到后台服务,后台服务再把文件传输到存储服务器上并按照指定的存储路径存放文件,从而对外提供一个可以读取的url地址,存在文件传输效率较低的问题。


技术实现要素:

3.为了解决上述问题至少之一,本发明第一方面提供一种文件上传方法,应用于后台服务,包括:
4.响应于前端服务发送的分片请求,通过调用存储服务器部署的分布式存储服务使得所述分布式存储服务进行分片操作并返回存储信息,所述分片请求包括待存储文件的文件名称和文件大小,所述存储信息包括所述待存储文件的存储标识、分片信息、以及与所述分片信息对应的带签名的存储服务器的存储地址链接,所述分片信息包括所述待存储文件的分片数量、分片标识以及各分片文件的大小;
5.将所述存储信息发送至所述前端服务,以使得所述前端服务根据所述分片信息和所述存储地址链接分别向所述存储服务器上传所述待存储文件的各分片文件;
6.响应于所述前端服务发送的合并请求,通过调用所述分布式存储服务使得所述分布式存储服务将存储的各分片文件进行合并操作并返回合并结果,所述合并请求为所述前端服务响应于所述待存储文件的各分片文件均已上传至所述存储服务器发送的;
7.将所述合并结果发送至所述前端服务,以使得所述前端服务呈现所述合并结果。
8.进一步地,所述响应于前端服务发送的分片请求,通过调用存储服务器部署的分布式存储服务使得所述分布式存储服务进行分片操作并返回存储信息进一步包括:在所述后台服务的数据库建立所述待存储文件的上传记录,所述上传记录包括所述待存储文件的文件名称、存储标识、分片信息、校验结果和上传状态,所述校验结果和上传状态被设置为初始值;
9.所述合并结果包括合并状态和附加信息,所述响应于所述前端服务发送的合并请求,通过调用所述分布式存储服务使得所述分布式存储服务将存储的各分片文件进行合并操作并返回合并结果进一步包括:
10.响应于所述合并状态为所述待存储文件在所述存储服务器的合并成功和校验成功,所述附加信息为存储在所述存储服务器的所述待存储文件的存储链接和校验值,根据所述校验值更新所述上传记录的校验结果,将所述上传记录的上传状态设置为上传成功;
11.或者
12.响应于所述合并状态为所述待存储文件在所述存储服务器的合并失败、或者合并成功但校验失败,生成文件上传失败提示并作为所述附加信息。
13.进一步地,所述分片请求还包括所述待存储文件的md5值,
14.所述响应于前端服务发送的分片请求,通过调用存储服务器部署的分布式存储服务使得所述分布式存储服务进行分片操作并返回存储信息进一步包括:
15.根据所述分片请求中的文件名称和md5值查询所述上传记录,
16.响应于存在所述待存储文件的上传记录、所述上传状态为初始值,根据所述待存储文件的存储标识调用所述分布式存储服务以获取所述存储服务器上已存储的所述待存储文件的各已存储分片文件,
17.根据所述上传记录的分片信息和所述各已存储分片文件获取未上传分片文件,所述存储信息的分片信息包括各未上传分片文件的分片标识、以及各未上传分片文件的大小;
18.所述将所述存储信息发送至所述前端服务,以使得所述前端服务根据所述分片信息和所述存储地址链接分别向所述存储服务器上传所述待存储文件的各分片文件进一步包括:使得所述前端服务根据所述待存储文件的存储标识、各未上传分片文件的分片标识以及对应的存储地址链接分别向所述存储服务器上传各未上传分片文件。
19.进一步地,所述分片请求还包括所述待存储文件的md5值,所述响应于前端服务发送的分片请求,通过调用存储服务器部署的分布式存储服务使得所述分布式存储服务进行分片操作并返回存储信息进一步包括:根据所述分片请求中的文件名称和md5值查询所述上传记录:
20.响应于存在所述待存储文件的上传记录、所述上传状态为上传成功、并且所述md5值与所述上传记录的校验结果一致,根据所述待存储文件的存储标识调用所述分布式存储服务以获取所述待存储文件的存储链接。
21.进一步地,所述带签名的存储服务器的存储地址链接包括所述后台服务和分布式存储服务的认证信息,在预设时间阈值内有效。
22.本发明第二方面提供一种文件上传方法,应用于前端服务,包括:
23.向后台服务发送分片请求以获取存储信息,所述分片请求包括待存储文件的文件名称和文件大小,所述存储信息为所述后台服务根据所述分片请求通过调用存储服务器部署的分布式存储服务使得所述分布式存储服务进行分片操作并返回的,所述存储信息包括所述待存储文件的存储标识、分片信息、以及与所述分片信息对应的带签名的存储服务器的存储地址链接,所述分片信息包括所述待存储文件的分片数量、分片标识以及各分片文件的大小;
24.根据所述分片信息和所述存储地址链接分别向所述存储服务器上传所述待存储文件的各分片文件;
25.响应于所述待存储文件的各分片文件均已上传至所述存储服务器,向后台服务发送合并请求以获取并呈现合并结果,所述合并结果为所述后台服务通过调用所述分布式存储服务使得所述分布式存储服务将存储的各分片文件进行合并操作并返回的。
26.进一步地,响应于允许文件重复上传的设置,在所述向后台服务发送分片请求以获取存储信息之前,所述文件上传方法还包括:
27.响应于用户选择的待存储文件的文件名称向后台服务发送查询请求以获取查询结果,若所述查询结果为所述待存储文件已存在则更新所述待存储文件的文件名称。
28.本发明第三方面提供一种文件上传系统,包括前端服务、后台服务、以及部署有分布式存储服务的存储服务器,其中,所述后台服务被配置为:
29.响应于前端服务发送的分片请求,通过调用存储服务器部署的分布式存储服务使得所述分布式存储服务进行分片操作并返回存储信息,所述分片请求包括待存储文件的文件名称和文件大小,所述存储信息包括所述待存储文件的存储标识、分片信息、以及与所述分片信息对应的带签名的存储服务器的存储地址链接,所述分片信息包括所述待存储文件的分片数量、分片标识以及各分片文件的大小;
30.将所述存储信息发送至所述前端服务,以使得所述前端服务根据所述分片信息和所述存储地址链接分别向所述存储服务器上传所述待存储文件的各分片文件;
31.响应于所述前端服务发送的合并请求,通过调用所述分布式存储服务使得所述分布式存储服务将存储的各分片文件进行合并操作并返回合并结果,所述合并请求为所述前端服务响应于所述待存储文件的各分片文件均已上传至所述存储服务器发送的;
32.将所述合并结果发送至所述前端服务,以使得所述前端服务呈现所述合并结果。
33.本发明第四方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明所述第一方面所述的方法;
34.或者
35.该程序被处理器执行时实现如本发明第二方面所述的方法。
36.本发明的第五方面一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,
37.所述处理器执行所述程序时实现如本发明第一方面述的方法;
38.或者
39.所述处理器执行所述程序时实现如本发明第二方面所述的方法。
40.本发明针对目前现有的问题,制定一种基于分布式存储服务的文件上传方法和上传系统,其中一个实施例的文件上传方法通过后台服务连接前端服务和部署有分布式存储服务的存储服务器,后台服务与分布式存储服务建立认证后,后台服务接收前端服务发送的分片请求并调用分布式存储服务获取存储信息,将存储信息传输至前端服务,前端服务根据存储信息获取分布式存储服务的接口和存储地址链接并直接向存储服务器上传文件,从而避免前端服务向后台服务传输文件,有效简化文件上传流程,提高文件传输效率,具有广泛的应用前景。
附图说明
41.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
42.图1示出本发明的一个实施例所述文件上传方法的流程图;
43.图2示出本发明的一个实施例所述文件上传系统的结构框图;
44.图3示出本发明的另一个实施例所述文件传输的泳道图;
45.图4示出本发明的另一个实施例所述文件上传方法的流程图;
46.图5示出本发明的另一个实施例所述的一种计算机设备的结构示意图。
具体实施方式
47.为了更清楚地说明本发明,下面结合优选实施例和附图对本发明做进一步的说明。附图中相似的部件以相同的附图标记进行表示。本领域技术人员应当理解,下面所具体描述的内容是说明性的而非限制性的,不应以此限制本发明的保护范围。
48.针对相关技术中存在的问题,如图1所示,本发明的一个实施例提供了一种文件上传方法,应用于后台服务,包括:
49.响应于前端服务发送的分片请求,通过调用存储服务器部署的分布式存储服务使得所述分布式存储服务进行分片操作并返回存储信息,所述分片请求包括待存储文件的文件名称和文件大小,所述存储信息包括所述待存储文件的存储标识、分片信息、以及与所述分片信息对应的带签名的存储服务器的存储地址链接,所述分片信息包括所述待存储文件的分片数量、分片标识以及各分片文件的大小;
50.将所述存储信息发送至所述前端服务,以使得所述前端服务根据所述分片信息和所述存储地址链接分别向所述存储服务器上传所述待存储文件的各分片文件;
51.响应于所述前端服务发送的合并请求,通过调用所述分布式存储服务使得所述分布式存储服务将存储的各分片文件进行合并操作并返回合并结果,所述合并请求为所述前端服务响应于所述待存储文件的各分片文件均已上传至所述存储服务器发送的;
52.将所述合并结果发送至所述前端服务,以使得所述前端服务呈现所述合并结果。
53.在本实施例中,所述分布式存储服务采用minio服务,通过后台服务连接前端服务和部署有minio服务的存储服务器,后台服务与minio服务建立认证后,后台服务接收前端服务发送的分片请求并调用minio服务获取存储信息,将存储信息传输至前端服务,前端服务根据存储信息获取minio服务的接口和存储地址链接并直接向存储服务器上传文件,从而避免前端服务向后台服务传输文件,有效简化文件上传流程,提高文件传输效率。
54.具体的,本实施例的文件上传方法将文件存储的功能使用基于minio的对象存储技术进行封装,存储服务器运行minio服务实现分布式的对象存储,通过使用不同的存储桶,实现使用一个minio服务能够同时支持多个业务系统的对象存储需求,具有较高的实用性和扩展性;由于minio服务不支持向前端服务暴露涉及安全性的敏感数据,例如minio服务的接口等,本实施例利用后台服务将文件上传过程中涉及的密钥等敏感信息通过相关加密算法转化成带签名的存储服务器的存储地址链接,将涉及安全性的敏感数据以及加密运算在所述后台服务中实现,在保证系统安全性的前提下降低对前端服务硬件配置的要求;所述前端服务通过所述带签名的存储服务器的存储地址链接直接向存储服务器上传文件,从而有效简化上传流程,提高文件传输效率。
55.在一个具体的示例中,如图2所示为一种基于minio服务的文件上传系统,包括前端服务、后台服务、以及部署有minio服务的存储服务器。其中所述前端服务包括访问minio服务的接口集合,支持javascript、java、python、golang和.net语言,能够内嵌于在网页、app等具有应用界面可操作的程序中运行;所述后台服务为业务后台服务,用于连接前端服
务和部署有minio服务的存储服务器,并与minio服务建立认证;所述minio服务为分布式文件存储系统,是一个基于go语言的对象存储服务,能够实现大部分亚马逊s3云存储服务接口,适用于存储大容量非结构化的数据,具有简单、轻量级、部署简单、支持海量存储、兼容amazon s3接口、低冗余、高可靠、读写性能优异等特点。所述前端服务与所述后台服务和minio服务相连以实现双向通信;所述后台服务与minio服务根据具体项目需求选择适当的方式进行连接,包括但不限定于通过互联网、局域网以及本机端口实现双向数据通信,本发明对此不做具体限定。
56.为更好地说明本技术的具体实施方式,下面以一个具体的文件传输为例进行说明,如图3所示:
57.第一步,前端服务向后台服务发送分片请求。
58.在本实施例中,所述分片请求包括待存储文件的文件名称和文件大小。考虑到所述前端服务本身的安全性受到硬件配置的限制、复杂的网络环境、以及运行环境多样化等因素的影响,其安全性相对于所述后台服务较差,因此所述分片请求中不包括涉及密钥、账号等用于认证的敏感信息。
59.第二步,后台服务根据分片请求调用minio服务。
60.在本实施例中,后台服务在调用minio服务之前,需要先与minio服务建立认证,minio服务进行认证时,例如需要的参数包括:account、password、secret和appkey,出于安全目的的考虑,这些参数作为敏感信息不能暴露在前端服务中,所以要通过将需要保护的敏感信息预置于后台服务中,在所述后台服务调用minio服务接口时,作为参数传递给minio服务,实现后台服务与minio服务之间进行认证;所述minio服务在通过敏感信息认证后,根据在接收到文件标识,按照预先设定的规则,生成用于上传分片数据使用的带签名的存储服务器的存储地址链接。所述签名为minio服务器使用非对称加密算法,对所述后台服务上传的敏感信息进行加密后获得,该签名本身不含有敏感信息,能够暴露给所述前端服务在上传文件时使用,所述minio服务器使用所述签名能够进行身份识别,实现对调用者的认证。
61.在一个可选的示例中,所述带签名的存储服务器的存储地址链接包括所述后台服务和minio服务的认证信息,在预设时间阈值内有效。通过设置所述认证信息的有效期,能够有效的避免攻击者利用网络技术获取所述带签名的存储服务器的存储地址链接后,获取签名信息进行重放攻击,能够显著提高系统的安全性。并且本实施例所述部署minio服务的存储服务器为私有定制服务器,能够根据实际应用需求进行搭建,相比于租用现有华为云、腾讯云和阿里云等公用服务器,不仅能够实现定制化的二次开发,而且在数据安全性和使用成本上具有明显优势。
62.第三步,minio服务将生成的存储信息传输至后台服务。
63.在本实施例中,通过调用minio服务的分片接口使得所述minio服务进行分片操作并向后台服务返回存储信息。所述存储信息包括所述待存储文件的存储标识、分片信息、以及与所述分片信息对应的带签名的存储服务器的存储地址链接,所述分片信息包括所述待存储文件的分片数量、分片标识以及各分片文件的大小,minio服务默认以5mb进行文件分片,以分片为单位逐个上传,分片上传完成后合并所有分片里面的数据以形成最终的文件,通过分片的方式能够使所述前端服务支持更大体积的待存储文件,提高上传速度和成功
率。
64.第四步,后台服务将存储信息传输至前端服务。
65.在本实施例中,所述后台服务仅将所述minio服务生成的所述存储信息返回给所述前端服务。有关所述存储信息的管理完全与所述后台服务解耦,所述存储信息完全由所述minio服务进行管理,如文件是否需要分片、分片的大小、分片文件签名等,相对于现有技术在后台服务处理所述存储信息,本实施例所述方法更具有扩展性和易用性,符合高内聚低耦合的设计原则。
66.在一个可选的示例中,所述后台服务还能够根据具体业务需要,对所述存储信息加入与具体业务相关的内容,实现在存储文件的基础上支持自定义的扩展功能。例如,在某公交站图像收集系统中,需要在图片文件中增加时间戳信息,所述minio服务只负责文件存储相关逻辑,时间戳的生成由该公交站图像收集系统的所述后台服务进行生成并添加到所述存储信息中,并由该公交站图像收集系统前端服务解析并加入所述待存储图片的数据文件中。
67.第五步,前端服务根据存储信息向所述存储服务器上传待存储文件的各分片文件。
68.在本实施例中,所述前端服务器根据从所述后台服务获取到的存储信息,将所述待存储文件按照所述分片信息、以及与所述分片信息对应的带签名的存储服务器的存储地址链接,读取所述待存储文件的文件流,根据分片信息确定文件流的偏移量和数据长度,依次将所述待存储文件直接通过所述带签名的存储服务器的存储地址链接进行分片文件上传,实现所述前端服务直接将待存储文件上传至存储服务器。所述前端服务直接通过所述带签名的链接,将所述待存储文件上传至所述minio服务,与现有技术相比只需进行一次文件上传,不需要先将文件上传至所述后台服务,再由所述后台服务上传至所述minio服务,本发明所述基于minio服务的文件上传方法只需一次文件上传操作,显著提高文件上传的效率,节约服务器资源。另一方面,因所述上传链接中包括签名,所述minio服务能够通过所述签名实现身份识别和安全校验,能够提高文件上传的安全性,防止攻击者上传非法文件,并且由于所述签名是所述minio服务生成的,所述前端无需进行复杂的非对称加密运算,从而有效降低对所述前端服务的硬件要求和运算时间。
69.在一个可选的示例中,所述前端服务还能够根据具体业务需要,对所述存储信息加入与具体业务相关的内容,实现在存储文件的基础上支持自定义的扩展功能。例如,在前述公交站图像收集系统中,需要在图片文件中增加时间戳信息,所述前端服务读取所述后台服务生成并添加到所述存储信息中的所述时间戳信息,在读取所述待存储文件的文件流时,将所述时间戳信息加入文件流中,实现所述自定义的扩展功能。
70.第六步,前端服务响应于各分片文件均已上传至存储服务器,向后台服务发送合并请求。
71.在本实施例中,所述前端服务使用所述带签名的存储服务器的存储地址链接,直接将所述待存储文件的每一个分片依次上传至所述存储服务器后,接收到上传成功的回调后,向所述后台服务器发送合并请求,所述合并请求包括所述待存储文件的存储标识和所述文件名称。在本实施例中,由前端服务接收到各分片文件均已上传至存储服务器的回调后再主动向所述后台服务发送合并请求,能够有效避免因所述前端服务的硬件设备性能受
限或者网络不稳定等异常情况导致所述前端服务和所述存储服务器状态不一致的情况,所述前端服务收到所述存储服务器上所述minio服务的回调通知,能够确保文件已经完成上传并通过了所述minio服务的校验,完整地执行了整个上传流程,此时前端服务再主动发起所述合并请求,能够确保文件上传状态完整有效。
72.在一个可选的示例中,所述前端服务还能够主动根据所述存储信息,例如使用所述存储标识以及所述分片信息,对某个所述待存储文件的上传状态进行管理,当所述前端服务判断该待存储文件的所有分片都完成上传并且未向所述后台服务发送合并请求时,主动向所述后台服务发送合并请求。该实施例所述方案能够有效避免所述待存储文件已经完成所有分片文件的上传,但因为网络延时、所述前端服务崩溃等异常情况导致所述前端服务没有接收到所述minio服务发送的上传成功回调时,能够继续执行所述待存储文件的后续上传步骤,具体的检测方法包括但不限定于在所述前端服务启动时,或者开启定时器周期性的对所有所述待存储文件的上传状态进行检测,或者提供界面让操作人员手工进行补发等,本领域技术人员应当根据具体需求选择适当的方式,本实施例不做具体限定。
73.第七步,后台服务根据合并请求调用minio服务。
74.在本实施例中,所述后台服务接收到所述前端服务发送的合并请求,从所述合并请求中解析出所述存储标识和文件名称,并补充所述minio服务的认证信息,调用所述minio服务的合并文件接口,其接口参数包括所述存储标识、文件名称以及认证信息,所述认证信息包括:account、password、secret和appkey。考虑到所述后台服务和minio服务都属于服务器,相对于所述前端服务,具有较高的安全性,因此能够直接将所述认证信息用于调用所述minio服务的合并文件接口,本领域技术人员根据具体需求采取有效的保护措施进行防护,包括但不限定于将服务器部署于防火墙之内,统一由运维人员定期维护等,本实施例不做具体限定。在本实施例中直接使用所述认证信息调用所述minio服务的所述合并文件接口,能够有效的降低所述minio服务的认证计算成本,无需进行复杂的验证签名计算,直接使用简单的比对方法验证接口调用的合法性,能够在保证安全性的前提下,提高认证速度和硬件需求。
75.第八步,所述minio服务进行合并操作并将合并结果传输至后台服务。
76.在本实施例中,所述minio服务响应于所述后台服务的请求,根据所述存储标识和文件名称定位到所述存储服务器上对应所述存储标识的所述待存储文件的所有分片文件,将各分片文件按照所述分片标识顺序依次进行合并,直到所有所述分片文件都完成合并后,将完整的所述待存储文件存储于所述存储服务器的指定目录中,为防止文件冲突,本实施例基于存储桶名和模块名称创建目录,规定所述后台服务与根目录名一一对应,并且所述文件名称中加入唯一标识防止重名,所述唯一标识包括但不限定于时间戳、随时字串、md5等,本领域技术人员应当根据实际情况设定唯一标识规则,本实施例不做具体限定,所述minio服务将合并后的结果返回给所述后台服务,所述合并后的结果包括:合并后文件的下载地址、合并结果。
77.在一个可选的示例中,所述minio服务还能够针对合并后的文件进行二次处理,包括但不限定于进行安全检查、归档备份以及加入数字水印等。所述安全检查包括但不限定于病毒扫描和木马检测。本领域技术人员应该根据具体需求进行二次处理,本实施例不做具体限定。
78.第九步,后台服务将合并结果发送至前端服务。在本实施例中,所述后台服务响应于接收到所述minio服务回应的所述合并后的结果,作为所述前端服务调用所述合并接口的回应返回给所述前端服务,所述合并后的结果包括合并状态、校验状态以及合并后的文件访问地址。
79.在一个可选的示例中,所述后台服务还能够根据实际项目的需求对所述合并后的结果进行二次加工补充扩展信息或进行二次加密再返回给所述前端服务,本实施例不做具体限定。
80.第十步,前端服务呈现合并结果。在本实施例中,所述前端服务响应于接收到的所述合并后的结果,根据所述合并状态和所述校验状态在用户界面中展示合并结果,当所述合并状态为成功且所述校验状态也为成功时,用户界面显示“合并成功,文件访问地址为
…”
;当所述合并状态为成功且所述校验状态也为失败时,用户界面显示“上传成功,文件校验失败!”;合并状态为失败时,用户界面显示“合并文件失败”。
81.在一个可选的示例中,所述前端服务,根据所述后台服务返回的所述合并后的结果的扩展信息,提示用户具体的失败原因、或者进行二次解密,本实施例不做具体限定。
82.至此,完成一次文件上传,本实施例所述的文件上传方法,通过上述步骤实现安全、高效和可扩展地将所述待存储文件,分割成若干所述分片文件后,依次直接上传至所述存储服务器,并由所述minio服务实现文件的合并和存储,并最终将文件合并和校验的结果返回到所述前端服务向用户展示。
83.相对于现有技术,本实施例所述文件上传方法只需要进行一次上传操作,无需经过所述后台服务进行二次上传操作,显著提高文件上传效率;同时利用所述后台服务实现需要一定算力的加解密计算,有效降低所述前端服务的硬件要求,降低前端成本和执行时间。具体的,所述前端服务只需将所述后台服务和所述minio服务计算好的所述签名信息字串直接作为普通的字串参数回传给所述minio服务进行所述分片文件上传操作即可,无需进行复杂的加解密计算即可在保证安全性的基础上,显著提高系统上传效率和稳定性;利用所述后台服务和所述前端服务配合,本实施例所述文件上传方法还能够根据具体的需求进行扩展,包含但不限定于二次加密、增加扩展信息以及实现其他扩展功能,具有较高的扩展性和实用性;利用所述minio服务,遵循高内聚低耦合的设计原则,将具体业务逻辑与文件对象存储逻辑解耦,由所述minio服务实现对象文件存储相关功能,由所述前端服务和后台服务配合实现具体的业务逻辑,具有较高的灵活性和稳定性,能够实现一个所述minio服务支持多套所述前端服务和后台服务的组合,实现跨项目复用,有效提高所述上传文件方法的开发效率,降低开发维护成本,具有较强的经济价值。
84.考虑到在后台服务实现断点续传,在一个可选的实施例中,所述响应于前端服务发送的分片请求,通过调用存储服务器部署的分布式存储服务使得所述分布式存储服务进行分片操作并返回存储信息进一步包括:在所述后台服务的数据库建立所述待存储文件的上传记录,所述上传记录包括所述待存储文件的文件名称、存储标识、分片信息、校验结果和上传状态,所述校验结果和上传状态被设置为初始值;
85.所述合并结果包括合并状态和附加信息,所述响应于所述前端服务发送的合并请求,通过调用所述分布式存储服务使得所述分布式存储服务将存储的各分片文件进行合并操作并返回合并结果进一步包括:响应于所述合并状态为所述待存储文件在所述存储服务
器的合并成功和校验成功,所述附加信息为存储在所述存储服务器的所述待存储文件的存储链接和校验值,根据所述校验值更新所述上传记录的校验结果,将所述上传记录的上传状态设置为上传成功;
86.或者
87.响应于所述合并状态为所述待存储文件在所述存储服务器的合并失败、或者合并成功但校验失败,生成文件上传失败提示并作为所述附加信息。
88.在本实施例中,所述后台服务利用所述上传记录能够准确管理每一个所述待存储文件的上传状态,实现随时根据上传状态进行筛选、校验以及补救,如当发生断线或者服务器重启时,进行断点续传,显著提高系统的安全性、稳定性和扩展性;另一方面,所述minio服务在进行合并操作后,对合并的文件进行校验,并根据合并的结果和校验状态设置所述合并结果,能够让用户清晰、明确的获取文件上传的状态,提高上传文件操作的用户体验。
89.基于上述实施例所述建立的上传记录,在一个可选的实施例中,所述分片请求还包括所述待存储文件的md5值,
90.所述响应于前端服务发送的分片请求,通过调用存储服务器部署的分布式存储服务使得所述分布式存储服务进行分片操作并返回存储信息进一步包括:
91.根据所述分片请求中的文件名称和md5值查询所述上传记录,
92.响应于存在所述待存储文件的上传记录、所述上传状态为初始值,根据所述待存储文件的存储标识调用所述minio服务以获取所述存储服务器上已存储的所述待存储文件的各已存储分片文件,
93.根据所述上传记录的分片信息和所述各已存储分片文件获取未上传分片文件,所述存储信息的分片信息包括各未上传分片文件的分片标识、以及各未上传分片文件的大小;
94.所述将所述存储信息发送至所述前端服务,以使得所述前端服务根据所述分片信息和所述存储地址链接分别向所述存储服务器上传所述待存储文件的各分片文件进一步包括:使得所述前端服务根据所述待存储文件的存储标识、各未上传分片文件的分片标识以及对应的存储地址链接分别向所述存储服务器上传各未上传分片文件。
95.具体的,所述前端服务利用md5摘要算法能将所述待存储文件的特征值表示为一个唯一字串,所述字串与所述待存储文件一一对应,且所述待存储文件的内容不变,利用md5摘要算法计算出的唯一字串也不变,因此利用md5摘要算法,能够实现唯一标识一个所述待存储文件,并且能够判断所述待存储文件的内容是否发生改变,即通过md5值,能够判断原始的所述待存储文件和上传到所述资源服务器的合并后的合并文件是否完全一致。在本实施例中,利用md5摘要算法计算出的唯一字串标识一个待存储文件,根据md5值查询所述上传记录,并确定未完成上传的分片文件,实现当所述前端服务重启或恢复网络后,无需重新上传已完成的分片文件,通过查询上传记录并按照分片序号进行排序,直接从最靠前的未完成分片开始继续上传,实现所述断点续传,显著提高所述文件上传方法的效率和稳定性。值得注意的是,所述minio服务本身并不支持文件的断点续传,本实施例提供的文件上传方法通过所述后台服务建立上传记录,使用所述待存储文件的md5值唯一标识一个文件,并分别记录所述待存储文件的每一个分片文件的状态,例如通过重构所述miniotemplate的实现代码,过滤掉已经上传成功的分片文件,直接从最靠前的未完成上传
分片文件开始上传,实现所述断点续传功能,克服所述minio服务不支持断点续传的缺陷,显著提高所述文件上传方法的健壮性、上传效率以及用户体验。
96.进一步地,基于建立所述上传记录,在一个可选的实施例中,所述分片请求还包括所述待存储文件的md5值,所述响应于前端服务发送的分片请求,通过调用存储服务器部署的分布式存储服务使得所述分布式存储服务进行分片操作并返回存储信息进一步包括:根据所述分片请求中的文件名称和md5值查询所述上传记录:
97.响应于存在所述待存储文件的上传记录、所述上传状态为上传成功、并且所述md5值与所述上传记录的校验结果一致,根据所述待存储文件的存储标识调用所述minio服务以获取所述待存储文件的存储链接。
98.在本实施例中,所述前端服务在向所述后台服务发出分片请求时,利用所述待存储文件的md5值实现唯一标识所述待存储文件,并通过所述待存储文件的md5值和所述合并文件的md5值是否相等校验文件是否上传成功。所述后台服务响应于所述前端服务的分片请求,判断若所述待存储文件的全部分片文件都为完成上传状态,且所述合并文件的md5值与所述前端服务上报的md5值相同,则直接返回所述存储文件的存储连接,实现“秒传”,否则继续进行断点续传,继续按顺序上传未完成的分片文件,或者提示用户文件校验失败,由用户自行决定是否重新上传。本实施例所述文件上传方法,通过md5值唯一标识文件,对于已完成上传并通过校验的文件实现秒传,对于未完成上传的文件实现断点续传,对于完成上传但校验失败的问题实现容错处理,具有较高的实用性和稳定性。
99.进一步地,在一个可选的实施例中,所述带签名的存储服务器的存储地址链接包括所述后台服务和minio服务的认证信息,在预设时间阈值内有效。
100.在本实施例中,所述minio服务在使用认证信息时,能够通过所述认证信证信息的扩展字段解析出该认证信息的生成时间,并根据预设值的时间阈值判断该认证信息是否有效,如所述认证信息生成时间过早已超过了预设值的时间阈值则直接判断该认证信息无效,拒绝接收所述前端服务上传的所述分片文件,从而显著提高所述文件上传方法的安全性,防止用户恶意使用攻击手段篡改或反复上传非法文件,能够实现抵抗攻击者恶意的重放攻击或者伪装合法前端服务上传非法文件,显著提高系统安全性。
101.基于上述应用于后台服务的文件上传方法,如图4所示,本技术还提供一种应用于前端服务的文件上传方法,包括:
102.向后台服务发送分片请求以获取存储信息,所述分片请求包括待存储文件的文件名称和文件大小,所述存储信息为所述后台服务根据所述分片请求通过调用存储服务器部署的minio服务使得所述minio服务进行分片操作并返回的,所述存储信息包括所述待存储文件的存储标识、分片信息、以及与所述分片信息对应的带签名的存储服务器的存储地址链接,所述分片信息包括所述待存储文件的分片数量、分片标识以及各分片文件的大小;
103.根据所述分片信息和所述存储地址链接分别向所述存储服务器上传所述待存储文件的各分片文件;
104.响应于所述待存储文件的各分片文件均已上传至所述存储服务器,向后台服务发送合并请求以获取并呈现合并结果,所述合并结果为所述后台服务通过调用所述minio服务使得所述minio服务将存储的各分片文件进行合并操作并返回的。
105.在本实施例中,所述前端服务无需进行复杂的非对称加密运算,也无需包括密钥
等敏感信息,直接使用所述带签名的存储服务器的存储地址链接,在保证安全性的前提下,有效降低对所述前端服务的硬件要求,提高所述前端服务的上传速度和稳定性;通过与所述后台服务配合,利用所述待存储文件的md5值唯一标识所述待存储文件,并与所述合并文件的md5进行比较,通过简单的字符串比较即可实现文件完整性的校验;所述前端服务还能够根据所述minio服务和所述后台服务返回的结果,对用户进行准确的信息反馈;通过所述后台服务维护的上传记录,实现断点续传或者秒传,具有较高的易用性、实用性以及稳定性。具体实施方式与应用于后台服务所述相关实施例相同,在此不再赘述。
106.考虑到相同文件存在不同用户的多次调用,在一个可选的实施例中,响应于允许文件重复上传的设置,在所述向后台服务发送分片请求以获取存储信息之前,所述文件上传方法还包括:
107.响应于用户选择的待存储文件的文件名称向后台服务发送查询请求以获取查询结果,若所述查询结果为所述待存储文件已存在则更新所述待存储文件的文件名称,实现允许重复上传文件。
108.在本实施例中,允许重复上传文件,能够有效增加所述文件上传方法的稳定性。例如,在前述公交站图像收集系统中允许文件重复上传,能够避免多个场景共用同一个资源文件时,因一方删除了资源而导致另一方无法继续使用资源的情况。具体的,在所述前端服务发送分片请求和合并请求时,增加用户标识字段,即为所述待存储文件增加用户标识维度,能够实现保证不合并其他用户上传的相同的文件所产生的分片,或者当所述待存储文件被复用时,一个用户删除文件后不影响其他用户继续使用相同文件,即当文件被复用时,实际上是使用所述用户标识为前缀复制一份文件给其他用户使用,在保证用户使用相同文件时无需重新上传的同时,又对复用文件进行解耦,避免因某个用户的删除、修改操作导致被复用的文件受到影响,具有较高的实用性和稳定性。
109.与上述实施例提供的文件上传方法相对应,本技术的一个实施例还提供一种应用上述文件上传方法的文件上传系统,由于本技术实施例提供的文件上传系统与上述几种实施例提供的文件上传方法相对应,因此在前实施方式也适用于本实施例提供的文件上传系统,在本实施例中不再详细描述。
110.如图2所示,本技术的一个实施例还提供一种应用上述文件上传方法的文件上传系统,包括前端服务、后台服务、以及部署有minio服务的存储服务器,其中,所述后台服务被配置为:
111.响应于前端服务发送的分片请求,通过调用存储服务器部署的minio服务使得所述minio服务进行分片操作并返回存储信息,所述分片请求包括待存储文件的文件名称和文件大小,所述存储信息包括所述待存储文件的存储标识、分片信息、以及与所述分片信息对应的带签名的存储服务器的存储地址链接,所述分片信息包括所述待存储文件的分片数量、分片标识以及各分片文件的大小;
112.将所述存储信息发送至所述前端服务,以使得所述前端服务根据所述分片信息和所述存储地址链接分别向所述存储服务器上传所述待存储文件的各分片文件;
113.响应于所述前端服务发送的合并请求,通过调用所述minio服务使得所述minio服务将存储的各分片文件进行合并操作并返回合并结果,所述合并请求为所述前端服务响应于所述待存储文件的各分片文件均已上传至所述存储服务器发送的;
114.将所述合并结果发送至所述前端服务,以使得所述前端服务呈现所述合并结果。
115.本实施例提供的文件上传系统,相对于现有的华为、腾讯、阿里等通用的商用分布式存储服务,具有成本低、能够定制化开发、能够使用私有服务管理文件对象的优点。在安全性方面更加可靠,并且能够根据具体的项目需求增加定制化的功能,如例如缩放、裁剪、旋转、水印等,具有更广泛的实用性。
116.本发明的另一个实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现:应用于后台服务,包括:
117.响应于前端服务发送的分片请求,通过调用存储服务器部署的minio服务使得所述minio服务进行分片操作并返回存储信息,所述分片请求包括待存储文件的文件名称和文件大小,所述存储信息包括所述待存储文件的存储标识、分片信息、以及与所述分片信息对应的带签名的存储服务器的存储地址链接,所述分片信息包括所述待存储文件的分片数量、分片标识以及各分片文件的大小;
118.将所述存储信息发送至所述前端服务,以使得所述前端服务根据所述分片信息和所述存储地址链接分别向所述存储服务器上传所述待存储文件的各分片文件;
119.响应于所述前端服务发送的合并请求,通过调用所述minio服务使得所述minio服务将存储的各分片文件进行合并操作并返回合并结果,所述合并请求为所述前端服务响应于所述待存储文件的各分片文件均已上传至所述存储服务器发送的;
120.将所述合并结果发送至所述前端服务,以使得所述前端服务呈现所述合并结果。
121.在实际应用中,所述计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
122.计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
123.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。
124.可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c ,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在
涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
125.如图5所示,本发明的另一个实施例提供的一种计算机设备的结构示意图。图5显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
126.如图5所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
127.总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。
128.计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
129.系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
130.具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
131.计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图5所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图5中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
132.处理器单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的一种基于minio服务的文件上传方法。
133.本发明针对目前现有的问题,制定一种基于minio服务的文件上传方法和上传系统,其中一个实施例的文件上传方法通过后台服务连接前端服务和部署有minio服务的存储服务器,后台服务与minio服务建立认证后,后台服务接收前端服务发送的分片请求并调用minio服务获取存储信息,将存储信息传输至前端服务,前端服务根据存储信息获取minio服务的接口和存储地址链接并直接向存储服务器上传文件,从而避免前端服务向后台服务传输文件,有效简化文件上传流程,提高文件传输效率,进一步地,针对minio不支持断点续传的问题,在所述后台服务中通过自编写程序实现断点续传功能,具有广泛的应用前景。
134.显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定,对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。
再多了解一些

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

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

相关文献