CN112217903B - 大文件传输方法、装置、服务器及存储介质 - Google Patents
大文件传输方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN112217903B CN112217903B CN202011160184.XA CN202011160184A CN112217903B CN 112217903 B CN112217903 B CN 112217903B CN 202011160184 A CN202011160184 A CN 202011160184A CN 112217903 B CN112217903 B CN 112217903B
- Authority
- CN
- China
- Prior art keywords
- file
- information
- module
- basic information
- data
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种大文件传输方法、装置、服务器及存储介质,所述方法包括:通过接口分发模块响应客户端的请求;当客户端的请求为上传/下载请求时,通过接口分发模块调用文件信息上下文模块,计算补全文件基本信息以及文件块信息列表,并向客户端返回相关信息;当客户端的请求为文件数据传输请求时,通过接口分发模块调用数据读写模块,建立文件连接以及读写操作,若数据读写模块成功建立文件连接,则向客户端返回成功信息,否则向客户端返回失败信息。本发明不需要将文件分片,也就不需要将文件合并,从而极其节省系统资源,又能达到大文件、超大文件远程传输的验证、续传、并行传输等要求,十分适合应用在对大文件、超大文件的文件传输领域。
Description
技术领域
本发明涉及一种大文件传输方法、装置、服务器及存储介质,属于文件传输领域。
背景技术
远程文件传输是指在网络中两台计算机实现对文件进行上传、下载、共享,首先将要传送的数据写在输入/输出的通道口上,然后通过套接字(Socket)将其传送到对方的计算机上,文件在网络上的传输的原理跟数据传输的原理是一样的,其区别在于文件传输需要先通FileInputStream/FileOutputStream将文件流读取到一个字节数组里,字节数组里存放的是以字节为单位的数据。而WEB端上传是针对上传操作的一种实现方式。
随着移动网络以及大数据的应用与发展,不可避免造成远程文件传输的要求越来越苛刻,表现在文件大小成几何级增加的同时又要快速、稳定处理。基于WEB端的传统上传方式,已经很难适应这些大文件、超大文件远程传输的要求。
WEB传统上传文件的方式,在文件体积较小时,还比较方便,但是需要传输大体积文件时,这些方法就会会受到各种限制。特别是当文件体积过大和网络速度不理想时,很容易造成用户资源和时间的浪费。对此,本领域的技术人员总结了一种分片上传方法,分片是指将一个文件切割为一系列特定大小的小数据片,有很多专利申请的技术都是基于此技术改进的,该方法计算文件全部内容的hash值记为文件特征值,传给后台程序判订文件是否存在,不存在的话WEB端对文件切片,依次传给后台程序,全部传完后,后台程序对所有分片进行合并。
上述分片方法大体上满足文件上传的要求,但同时也存在问题,例如:
1)仅支持单文件上传;
2)每个分片不能满足重复秒传的条件;
3)上传过程因网络问题而停止,重新上传时不会续传,而是从头上传;
4)若文件大小超过临界点,客户端在把文件分片时,容易内存溢出并造成客户端崩溃;
5)上传请求并发时,后台程序进行合并文件的操作会严重影响并发上传时的效率。
发明内容
有鉴于此,本发明提供了一种大文件传输方法、装置、服务器及存储介质,其解决了上述分片上传技术的问题,不需要将文件分片,也就不需要将文件合并,从而极其节省系统资源,又能达到大文件、超大文件远程传输的验证、续传、并行传输等要求,十分适合应用在对大文件、超大文件的文件传输领域。
本发明的第一个目的在于提供一种大文件传输方法。
本发明的第二个目的在于提供一种大文件传输装置。
本发明的第三个目的在于提供一种服务器。
本发明的第四个目的在于提供一种存储介质。
本发明的第一个目的可以通过采取如下技术方案达到:
一种大文件传输方法,所述方法包括:
通过接口分发模块响应客户端的请求;
当客户端的请求为上传/下载请求时,通过接口分发模块调用文件信息上下文模块,计算补全文件基本信息以及文件块信息列表,并向客户端返回相关信息;
当客户端的请求为文件数据传输请求时,通过接口分发模块调用数据读写模块,建立文件连接以及读写操作,若数据读写模块成功建立文件连接,则向客户端返回成功信息,否则向客户端返回失败信息。
进一步的,所述通过接口分发模块调用文件信息上下文模块,计算补全文件基本信息以及文件块信息列表,具体包括:
针对客户端的上传请求,通过接口分发模块将上传指令分发到文件信息上下文模块,以使文件信息上下文模块从文件信息存储模块中查找文件基本信息,若文件基本信息存在,则直接向接口分发模块返回成功信息,若文件基本信息不存在,则新增文件基本信息,利用文件基本信息向数据验证模块进行文件分块计算并得到相关文件块信息,组合文件基本信息与文件块信息向接口分发模块返回;
针对客户端的下载请求,通过接口分发模块将下载指令分发到文件信息上下文模块,以使文件信息上下文模块从文件信息存储模块中查找文件基本信息,若文件基本信息不存在,则直接向接口分发模块返回失败信息,若文件基本信息存在,则利用文件基本信息向数据验证模块进行文件验证操作并得到相关文件块信息,组合文件基本信息与文件块信息向接口分发模块返回。
进一步的,在针对客户端的上传请求中,所述利用文件基本信息向数据验证模块进行文件分块计算并得到相关文件块信息,组合文件基本信息与文件块信息向接口分发模块返回,具体包括:
通过文件信息上下文模块将上传验证指令发送到数据验证模块,并将文件基本信息提供给数据验证模块,以使数据验证模块利用文件基本信息,向文件数据存储模块建立一个空的文件,并以文件唯一标识命名,将新建的文件URL补全到文件基本信息,根据补全文件基本信息计算文件块信息列表,将文件基本信息以及文件块信息向文件信息存储模块进行更新,组合文件基本信息与文件块信息向接口分发模块返回。
进一步的,在针对客户端的下载请求中,所述利用文件基本信息向数据验证模块进行文件验证操作并得到相关文件块信息,组合文件基本信息与文件块信息向接口分发模块返回,具体包括:
通过文件信息上下文模块将下载验证指令发送到数据验证模块,并将文件基本信息提供给数据验证模块,以使数据验证模块利用文件基本信息,向文件信息存储模块查询对应的文件块信息列表,若查询不到对应的文件块信息列表,则直接向接口分发模块返回错误信息,若查询到对应的文件块信息列表,则根据文件唯一标识向文件数据存储模块验证文件的完整性,组合文件基本信息与文件块信息向接口分发模块返回。
进一步的,所述通过接口分发模块调用数据读写模块,建立文件连接以及读写操作,具体包括:
通过接口分发模块将读指令分发到数据读写模块,并提供文件基本信息以及文件块信息列表给数据读写模块,以使数据读写模块根据文件基本信息以及文件块信息列表,使用RandomAccessFile建立远程目标文件以及本地源文件连接,并以线程的方式放进线程池执行,若建立成功,则向接口分发模块返回成功信息,若建立失败,则向接口分发模块返回失败信息;
通过接口分发模块将写指令分发到数据读写模块,并提供文件基本信息以及文件块信息列表给数据读写模块,以使数据读写模块根据文件基本信息以及文件块信息列表,使用RandomAccessFile建立远程源文件以及本地目标文件连接,并以线程的方式放进线程池执行,若建立成功,则向接口分发模块返回成功信息,若建立失败,则向接口分发模块返回失败信息;当所有文件数据流写入完成后,调用数据验证模块进行文件完整性检查并更新文件基本信息的状态标记;在文件数据流写入过程中,若发生文件数据流断开的异常,则调用数据验证模块进行文件块信息更新。
进一步的,所述调用数据验证模块进行文件完整性检查并更新文件基本信息的状态标记,具体包括:
通过数据读写模块将文件数据流写入完成验证指令发送到数据验证模块,并提供文件基本信息给数据验证模块,以使数据验证模块利用文件基本信息,向文件数据存储模块验证对应文件的完整性,若满足条件,则标记文件基本信息完成状态并向文件信息存储模块进行更新,向数据读写模块返回执行结果;
所述调用数据验证模块进行文件块信息更新,具体包括:
通过数据读写模块将文件数据流断开的异常处理验证指令发送到数据验证模块,并提供文件块信息列表给数据验证模块,以使数据验证模块利用文件块信息列表,直接向文件信息存储模块进行文件块信息更新,向数据读写模块返回执行结果。
进一步的,所述通过接口分发模块调用数据读写模块,建立文件连接以及读写操作之后,还包括:
通过数据读写模块周期性地向数据验证模块获取未传输完成的文件块信息列表,使用文件块信息建立远程源文件以及本地目标文件连接,并以线程的方式放进线程池执行,若建立成功,从文件块的结束位置继续写入,以实现续传方式写入;当所有文件数据流写入完成后,调用数据验证模块进行文件完整性检查并更新文件基本信息的状态标记;在文件数据流写入过程中,若发生文件数据流断开的异常,则调用数据验证模块进行文件块信息更新。
本发明的第二个目的可以通过采取如下技术方案达到:
一种大文件传输装置,所述装置包括:
响应单元,用于通过接口分发模块响应客户端的请求;
第一调用单元,用于当客户端的请求为上传/下载请求时,通过接口分发模块调用文件信息上下文模块,计算补全文件基本信息以及文件块信息列表,并向客户端返回相关信息;
第二调用单元,用于当客户端的请求为文件数据传输请求时,通过接口分发模块调用数据读写模块,建立文件连接以及读写操作,若数据读写模块成功建立文件连接,则向客户端返回成功信息,否则向客户端返回失败信息。
本发明的第三个目的可以通过采取如下技术方案达到:
一种服务器,包括处理器以及用于存储处理器可执行程序的存储器,所述处理器执行存储器存储的程序时,实现上述的大文件传输方法。
本发明的第四个目的可以通过采取如下技术方案达到:
一种存储介质,存储有程序,所述程序被处理器执行时,实现上述的大文件传输方法。
本发明相对于现有技术具有如下的有益效果:
1、本发明既能够实现大文件、超大文件远程传输的要求,而不需要进行对文件分片、合并的操作,极大地节省服务器与客户端的资源,并且能够实现多文件同时传输;此外,通过服务器的返回机制,不需要对文件数据流完成传输才向客户端返回结果,有效避免客户端的等待延时,能够做到毫秒级响应,对客户端为用户提供一个友好的操作界面有着极其重要的帮助。
2、本发明的文件信息上下文模块可以维护文件信息,包括文件的唯一标识、原文件名、大小、文件类型、文件储存位置等文件基本信息;也对文件进行分块计算,记录文件块信息,包括各文件块的开始位置、结束位置、总长度、已读写长度等,通过文件信息上下文模块的实现,有效对文件信息的实时管理,能够使文件实现秒传(“忽略式”上传方式)、自检等功能。
3、本发明的数据读写模块可以对文件数据流进行读写操作,该数据读写模块的核心是使用java.io.RandomAccessFile来实现文件的远程按分块并行读取,即将一个文件按特定大小标记成的N个文件块(即数据块),同时读写,以及补全文件机制验证文件完整性、续传功能,以实现大文件、超大文件远程传输的要求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要利用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明实施例1的服务器中各个模块的关系图。
图2为本发明实施例1的大文件传输方法的流程图。
图3为本发明实施例1的客户端的上传请求的处理流程图。
图4为本发明实施例1的客户端的下载请求的处理流程图。
图5为本发明实施例2的大文件传输装置的结构框图。
图6为本发明实施例3的服务器的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
虽然分片上传的方式也能基本解决这一问题,但是它同样存在的一些问题,尤其是在文件分片以及文件合并的过程,这是极其消耗客户端以及服务器资源的,也是分片上传该方式从技术方面不可力抗的,要解决只能增加系统资源,因此本实施例提供了一种大文件传输方法,该方法既能够实现大文件、超大文件远程传输的要求,而不需要进行对文件分片、合并的操作,极大地节省服务器与客户端的资源,并且能够实现多文件同时传输。
本实施例的大文件传输方法主要通过服务器实现,服务器可以包括接口分发模块101、文件信息上下文模块102、数据读写模块103、数据验证模块104、文件信息存储模块105以及文件数据存储模块106,这几个模块的说明如下:
接口分发模块101主要用于实现客户端与服务器之间的通讯以及请求处理,使用Http协议响应客户端的请求,对客户端不同请求进行分发处理。
文件信息上下文模块102主要用于维护文件信息,包括文件的唯一标识(例如MD5)、原文件名、大小、文件类型、文件储存位置等文件基本信息;也对文件进行分块计算,得到一系列文件块(即数据块),记录文件块信息,包括各文件块的开始位置、结束位置、总长度、已读写长度等;其中,分块是指将一个文件看成一个字节组数,根据该文件的下标按特定大小分成一系列文件块,将各文件块的开始下标与结束下标记录下来。
数据读写模块103主要用于对文件数据流进行读写操作,该数据读写模块的核心是使用java.io.RandomAccessFile来实现,底层实现中他实现的是DataInput和DataOutput接口,并非是FileInputStream和FileOutputStream,与OutputStearm,Writer等输出流不同的是,RandomAccessFile类允许自由定位文件记录指针,可以不从文件开始的地方进行输出;更重要的是,它能允许多线程同时对一个文件进行操作。
数据验证模块104主要用于维护文件块信息以及验证文件数据的完整性。
文件信息存储模块105主要用于存储文件基本信息与文件块信息,可以使用任意数据库进行存放,例如MySQL,向外提供数据库操作函数。
文件数据存储模块106主要用于存储文件数据,使用普通的文件系统即可,例如Linux文件系统,向外提供文件系统的操作函数。
如图1和图2所示,本实施例的大文件传输方法包括以下步骤:
S201、通过接口分发模块响应客户端的请求。
客户端的请求可以包括上传请求、下载请求和文件数据传输请求,若客户端的请求为上传/下载请求,要求客户端传递文件基本信息列表,即客户端的上传/下载请求包括文件基本信息列表,文件基本信息如唯一标识(例如MD5)、原文件名、大小、文件类型、本地文件URL(Uniform Resource Locator,统一资源定位符);若客户端的请求为文件数据传输请求,要求客户端传递文件基本信息列表以及文件块信息列表,即客户端的文件数据传输请求包括文件基本信息列表以及文件块信息列表,文件块信息如文件块的开始位置、结束位置、总长度、已读写长度。
S202、当客户端的请求为上传/下载请求时,通过接口分发模块调用文件信息上下文模块,计算补全文件基本信息以及文件块信息列表,并向客户端返回相关信息。
S2021、如图3所示,针对客户端的上传请求,通过接口分发模块将上传指令分发到文件信息上下文模块,以使文件信息上下文模块从文件信息存储模块中查找文件基本信息,若文件基本信息存在,则直接向接口分发模块返回成功信息,若文件基本信息不存在,则新增文件基本信息,利用文件基本信息向数据验证模块进行文件分块计算并得到相关文件块信息,组合文件基本信息与文件块信息向接口分发模块返回。
其中,利用文件基本信息向数据验证模块进行文件分块计算并得到相关文件块信息,具体包括:
通过文件信息上下文模块将上传验证指令(即新增文件块信息指令)发送到数据验证模块,并将文件基本信息提供给数据验证模块,以使数据验证模块利用文件基本信息,向文件数据存储模块建立一个空的文件,并以文件唯一标识(如MD5)命名,将新建的文件URL补全到文件基本信息,根据补全文件基本信息计算文件块信息列表,将文件基本信息以及文件块信息向文件信息存储模块进行更新,组合文件基本信息与文件块信息向接口分发模块返回。
S2022、如图4所示,针对客户端的下载请求,通过接口分发模块将下载指令分发到文件信息上下文模块,以使文件信息上下文模块从文件信息存储模块中查找文件基本信息,若文件基本信息不存在,则直接向接口分发模块返回失败信息,若文件基本信息存在,则利用文件基本信息向数据验证模块进行文件验证操作并得到相关文件块信息,组合文件基本信息与文件块信息向接口分发模块返回。
其中,利用文件基本信息向数据验证模块进行文件验证操作并得到相关文件块信息,组合文件基本信息与文件块信息向接口分发模块返回,具体包括:
通过文件信息上下文模块将下载验证指令(即查询文件块信息指令)发送到数据验证模块,并将文件基本信息提供给数据验证模块,以使数据验证模块利用文件基本信息,向文件信息存储模块查询对应的文件块信息列表,若查询不到对应的文件块信息列表,则直接向接口分发模块返回错误信息,若查询到对应的文件块信息列表,则根据文件唯一标识向文件数据存储模块验证文件的完整性,组合文件基本信息与文件块信息向接口分发模块返回。
S203、当客户端的请求为文件数据传输请求时,通过接口分发模块调用数据读写模块,建立文件连接以及读写操作,若数据读写模块成功建立文件连接,则向客户端返回成功信息,不需要等待文件数据传输完成,否则向客户端返回失败信息。
通过接口分发模块调用数据读写模块,建立文件连接以及读写操作,具体包括:
S2031、通过接口分发模块将读指令(即下载指令)分发到数据读写模块,并提供文件基本信息以及文件块信息列表给数据读写模块,以使数据读写模块根据文件基本信息以及文件块信息列表,使用RandomAccessFile建立远程目标文件以及本地源文件连接,并以线程的方式放进线程池执行,若建立成功,则向接口分发模块返回成功信息,不需要等待文件数据传输完成,若建立失败,则向接口分发模块返回失败信息。
其中,调用数据验证模块进行文件完整性检查并更新文件基本信息的状态标记,具体包括:
通过数据读写模块将文件数据流写入完成验证指令发送到数据验证模块,并提供文件基本信息给数据验证模块,以使数据验证模块利用文件基本信息,向文件数据存储模块验证对应文件的完整性,若满足条件,则标记文件基本信息完成状态并向文件信息存储模块进行更新,向数据读写模块返回执行结果,执行结果为True或False。
S2032、通过接口分发模块将写指令(即上传指令)分发到数据读写模块,并提供文件基本信息以及文件块信息列表给数据读写模块,以使数据读写模块根据文件基本信息以及文件块信息列表,使用RandomAccessFile建立远程源文件以及本地目标文件连接,并以线程的方式放进线程池执行,若建立成功,则向接口分发模块返回成功信息,不需要等待文件数据传输完成,若建立失败,则向接口分发模块返回失败信息;当所有文件数据流写入完成后,调用数据验证模块进行文件完整性检查并更新文件基本信息的状态标记;在文件数据流写入过程中,若发生文件数据流断开的异常,例如网络断开,则调用数据验证模块进行文件块信息更新。
步骤S2032是文件数据流的写入操作过程,但是这个文件数据流操作过程中可能会因为各种客观原因会导致数据流操作中断,直接影响文件块数据的完整性,这个时候它会更新对应着这个文件块的相关信息,这个就是文件块信息,文件块数据与文件块信息是不同的概念,例如一个2M的文件,其为文件块数据,指的是文件真正的数据,以文件的形式放在文件夹;而记录这个文件的标识、开始位置、结束位置、总长度、已读写长度、文件路径等信息为文件块信息,这些信息存储在数据库中,即存储在文件信息存储模块中。
其中,调用数据验证模块进行文件块信息更新,具体包括:
通过数据读写模块将文件数据流断开的异常处理验证指令发送到数据验证模块,并提供文件块信息列表给数据验证模块,以使数据验证模块利用文件块信息列表,直接向文件信息存储模块进行文件块信息更新,向数据读写模块返回执行结果,执行结果为True或False。
本实施例的大文件传输方法,还具有补全文件机制,补全文件机制可以在通过接口分发模块调用数据读写模块,建立文件连接以及读写操作之后进行,通过定时器实现,定时向数据验证模块获取未传输完成的文件块信息列表,并根据文件块信息进行补全操作,补全操作与上述步骤S2032类似,具体包括:
通过数据读写模块周期性地向数据验证模块获取未传输完成的文件块信息列表,使用文件块信息建立远程源文件以及本地目标文件连接,并以线程的方式放进线程池执行,若建立成功,从文件块的结束位置继续写入,以实现续传方式写入;当所有文件数据流写入完成后,调用数据验证模块进行文件完整性检查并更新文件基本信息的状态标记;在文件数据流写入过程中,若发生文件数据流断开的异常,例如网络断开,则调用数据验证模块进行文件块信息更新。
本领域技术人员可以理解,实现上述实施例的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,相应的程序可以存储于计算机可读存储介质中。
应当注意,尽管在附图中以特定顺序描述了上述实施例的方法操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
实施例2:
如图5所示,本实施例提供了一种大文件传输装置,该装置包括响应单元501、第一调用单元502和第二调用单元503,各个单元的具体功能如下:
响应单元501,用于通过接口分发模块响应客户端的请求。
第一调用单元502,用于当客户端的请求为上传/下载请求时,通过接口分发模块调用文件信息上下文模块,计算补全文件基本信息以及文件块信息列表,并向客户端返回相关信息。
第二调用单元503,用于当客户端的请求为文件数据传输请求时,通过接口分发模块调用数据读写模块,建立文件连接以及读写操作,若数据读写模块成功建立文件连接,则向客户端返回成功信息,否则向客户端返回失败信息。
本实施例中各个单元的具体实现可以参见上述实施例1,在此不再一一赘述;需要说明的是,本实施例提供的装置仅以上述各功能单元的划分进行举例说明,在实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。
可以理解,上述装置所利用的术语“第一”、“第二”等可用于描述各种单元,但这些单元不受这些术语限制。这些术语仅用于将第一个单元与另一个单元区分。举例来说,在不脱离本发明的范围的情况下,可以将第一调用单元称为第二调用单元,且类似地,可将第二调用单元称为第一调用单元,第一调用单元和第二调用单元两者都是调用单元,但其不是同一调用单元。
实施例3:
如图6所示,本实施例提供了一种服务器,该服务器可以是计算机,其包括通过系统总线601连接的处理器602、存储器和网络接口603,该处理器用于提供计算和控制能力,该存储器包括非易失性存储介质604和内存储器605,该非易失性存储介质604存储有操作系统、计算机程序和数据库,该内存储器605为非易失性存储介质中的操作系统和计算机程序的运行提供环境,处理器602执行存储器存储的计算机程序时,实现上述实施例1的大文件传输方法,如下:
通过接口分发模块响应客户端的请求;
当客户端的请求为上传/下载请求时,通过接口分发模块调用文件信息上下文模块,计算补全文件基本信息以及文件块信息列表,并向客户端返回相关信息;
当客户端的请求为文件数据传输请求时,通过接口分发模块调用数据读写模块,建立文件连接以及读写操作,若数据读写模块成功建立文件连接,则向客户端返回成功信息,否则向客户端返回失败信息。
实施例4:
本实施例提供了一种存储介质,该存储介质为计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时,实现上述实施例1的大文件传输方法,如下:
通过接口分发模块响应客户端的请求;
当客户端的请求为上传/下载请求时,通过接口分发模块调用文件信息上下文模块,计算补全文件基本信息以及文件块信息列表,并向客户端返回相关信息;
当客户端的请求为文件数据传输请求时,通过接口分发模块调用数据读写模块,建立文件连接以及读写操作,若数据读写模块成功建立文件连接,则向客户端返回成功信息,否则向客户端返回失败信息。
需要说明的是,本实施例的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
综上所述,本发明既能够实现大文件、超大文件远程传输的要求,而不需要进行对文件分片、合并的操作,极大地节省服务器与客户端的资源,并且能够实现多文件同时传输;此外,通过服务器的返回机制,不需要对文件数据流完成传输才向客户端返回结果,有效避免客户端的等待延时,能够做到毫秒级响应,对客户端为用户提供一个友好的操作界面有着极其重要的帮助。
以上所述,仅为本发明专利较佳的实施例,但本发明专利的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明专利所公开的范围内,根据本发明专利的技术方案及其发明构思加以等同替换或改变,都属于本发明专利的保护范围。
Claims (9)
1.一种大文件传输方法,其特征在于,所述方法包括:
通过接口分发模块响应客户端的请求;
当客户端的请求为上传/下载请求时,通过接口分发模块调用文件信息上下文模块,计算补全文件基本信息以及文件块信息列表,并向客户端返回相关信息,所述文件信息上下文模块用于维护文件基本信息,所述文件基本信息包括文件的唯一标识、原文件名、大小、文件类型、文件储存位置;对文件进行分块计算,得到一系列文件块,记录文件块信息,所述文件块信息包括各文件块的开始位置、结束位置、总长度、已读写长度;其中,分块是指将一个文件看成一个字节组数,根据该文件的下标按特定大小分成一系列文件块,将各文件块的开始下标与结束下标记录下来;
当客户端的请求为文件数据传输请求时,通过接口分发模块调用数据读写模块,建立文件连接以及读写操作,若数据读写模块成功建立文件连接,则向客户端返回成功信息,否则向客户端返回失败信息;
所述通过接口分发模块调用文件信息上下文模块,计算补全文件基本信息以及文件块信息列表,具体包括:
针对客户端的上传请求,通过接口分发模块将上传指令分发到文件信息上下文模块,以使文件信息上下文模块从文件信息存储模块中查找文件基本信息,若文件基本信息存在,则直接向接口分发模块返回成功信息,若文件基本信息不存在,则新增文件基本信息,利用文件基本信息向数据验证模块进行文件分块计算并得到相关文件块信息,组合文件基本信息与文件块信息向接口分发模块返回;
针对客户端的下载请求,通过接口分发模块将下载指令分发到文件信息上下文模块,以使文件信息上下文模块从文件信息存储模块中查找文件基本信息,若文件基本信息不存在,则直接向接口分发模块返回失败信息,若文件基本信息存在,则利用文件基本信息向数据验证模块进行文件验证操作并得到相关文件块信息,组合文件基本信息与文件块信息向接口分发模块返回。
2.根据权利要求1所述的大文件传输方法,其特征在于,在针对客户端的上传请求中,所述利用文件基本信息向数据验证模块进行文件分块计算并得到相关文件块信息,组合文件基本信息与文件块信息向接口分发模块返回,具体包括:
通过文件信息上下文模块将上传验证指令发送到数据验证模块,并将文件基本信息提供给数据验证模块,以使数据验证模块利用文件基本信息,向文件数据存储模块建立一个空的文件,并以文件唯一标识命名,将新建的文件URL补全到文件基本信息,根据补全文件基本信息计算文件块信息列表,将文件基本信息以及文件块信息向文件信息存储模块进行更新,组合文件基本信息与文件块信息向接口分发模块返回。
3.根据权利要求1所述的大文件传输方法,其特征在于,在针对客户端的下载请求中,所述利用文件基本信息向数据验证模块进行文件验证操作并得到相关文件块信息,组合文件基本信息与文件块信息向接口分发模块返回,具体包括:
通过文件信息上下文模块将下载验证指令发送到数据验证模块,并将文件基本信息提供给数据验证模块,以使数据验证模块利用文件基本信息,向文件信息存储模块查询对应的文件块信息列表,若查询不到对应的文件块信息列表,则直接向接口分发模块返回错误信息,若查询到对应的文件块信息列表,则根据文件唯一标识向文件数据存储模块验证文件的完整性,组合文件基本信息与文件块信息向接口分发模块返回。
4.根据权利要求1所述的大文件传输方法,其特征在于,所述通过接口分发模块调用数据读写模块,建立文件连接以及读写操作,具体包括:
通过接口分发模块将读指令分发到数据读写模块,并提供文件基本信息以及文件块信息列表给数据读写模块,以使数据读写模块根据文件基本信息以及文件块信息列表,使用RandomAccessFile建立远程目标文件以及本地源文件连接,并以线程的方式放进线程池执行,若建立成功,则向接口分发模块返回成功信息,若建立失败,则向接口分发模块返回失败信息;
通过接口分发模块将写指令分发到数据读写模块,并提供文件基本信息以及文件块信息列表给数据读写模块,以使数据读写模块根据文件基本信息以及文件块信息列表,使用RandomAccessFile建立远程源文件以及本地目标文件连接,并以线程的方式放进线程池执行,若建立成功,则向接口分发模块返回成功信息,若建立失败,则向接口分发模块返回失败信息;当所有文件数据流写入完成后,调用数据验证模块进行文件完整性检查并更新文件基本信息的状态标记;在文件数据流写入过程中,若发生文件数据流断开的异常,则调用数据验证模块进行文件块信息更新。
5.根据权利要求4所述的大文件传输方法,其特征在于,所述调用数据验证模块进行文件完整性检查并更新文件基本信息的状态标记,具体包括:
通过数据读写模块将文件数据流写入完成验证指令发送到数据验证模块,并提供文件基本信息给数据验证模块,以使数据验证模块利用文件基本信息,向文件数据存储模块验证对应文件的完整性,若满足条件,则标记文件基本信息完成状态并向文件信息存储模块进行更新,向数据读写模块返回执行结果;
所述调用数据验证模块进行文件块信息更新,具体包括:
通过数据读写模块将文件数据流断开的异常处理验证指令发送到数据验证模块,并提供文件块信息列表给数据验证模块,以使数据验证模块利用文件块信息列表,直接向文件信息存储模块进行文件块信息更新,向数据读写模块返回执行结果。
6.根据权利要求1-5任一项所述的大文件传输方法,其特征在于,所述通过接口分发模块调用数据读写模块,建立文件连接以及读写操作之后,还包括:
通过数据读写模块周期性地向数据验证模块获取未传输完成的文件块信息列表,使用文件块信息建立远程源文件以及本地目标文件连接,并以线程的方式放进线程池执行,若建立成功,从文件块的结束位置继续写入,以实现续传方式写入;当所有文件数据流写入完成后,调用数据验证模块进行文件完整性检查并更新文件基本信息的状态标记;在文件数据流写入过程中,若发生文件数据流断开的异常,则调用数据验证模块进行文件块信息更新。
7.一种大文件传输装置,其特征在于,所述装置包括:
响应单元,用于通过接口分发模块响应客户端的请求;
第一调用单元,用于当客户端的请求为上传/下载请求时,通过接口分发模块调用文件信息上下文模块,计算补全文件基本信息以及文件块信息列表,并向客户端返回相关信息,所述文件信息上下文模块用于维护文件基本信息,所述文件基本信息包括文件的唯一标识、原文件名、大小、文件类型、文件储存位置;对文件进行分块计算,得到一系列文件块,记录文件块信息,所述文件块信息包括各文件块的开始位置、结束位置、总长度、已读写长度;其中,分块是指将一个文件看成一个字节组数,根据该文件的下标按特定大小分成一系列文件块,将各文件块的开始下标与结束下标记录下来;
第二调用单元,用于当客户端的请求为文件数据传输请求时,通过接口分发模块调用数据读写模块,建立文件连接以及读写操作,若数据读写模块成功建立文件连接,则向客户端返回成功信息,否则向客户端返回失败信息;
所述通过接口分发模块调用文件信息上下文模块,计算补全文件基本信息以及文件块信息列表,具体包括:
针对客户端的上传请求,通过接口分发模块将上传指令分发到文件信息上下文模块,以使文件信息上下文模块从文件信息存储模块中查找文件基本信息,若文件基本信息存在,则直接向接口分发模块返回成功信息,若文件基本信息不存在,则新增文件基本信息,利用文件基本信息向数据验证模块进行文件分块计算并得到相关文件块信息,组合文件基本信息与文件块信息向接口分发模块返回;
针对客户端的下载请求,通过接口分发模块将下载指令分发到文件信息上下文模块,以使文件信息上下文模块从文件信息存储模块中查找文件基本信息,若文件基本信息不存在,则直接向接口分发模块返回失败信息,若文件基本信息存在,则利用文件基本信息向数据验证模块进行文件验证操作并得到相关文件块信息,组合文件基本信息与文件块信息向接口分发模块返回。
8.一种服务器,包括处理器以及用于存储处理器可执行程序的存储器,其特征在于,所述处理器执行存储器存储的程序时,实现权利要求1-6任一项所述的大文件传输方法。
9.一种存储介质,存储有程序,其特征在于,所述程序被处理器执行时,实现权利要求1-6任一项所述的大文件传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011160184.XA CN112217903B (zh) | 2020-10-27 | 2020-10-27 | 大文件传输方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011160184.XA CN112217903B (zh) | 2020-10-27 | 2020-10-27 | 大文件传输方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112217903A CN112217903A (zh) | 2021-01-12 |
CN112217903B true CN112217903B (zh) | 2023-08-15 |
Family
ID=74056592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011160184.XA Active CN112217903B (zh) | 2020-10-27 | 2020-10-27 | 大文件传输方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112217903B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113726838B (zh) * | 2021-06-17 | 2023-09-19 | 武汉理工数字传播工程有限公司 | 文件传输方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102055784A (zh) * | 2009-11-06 | 2011-05-11 | 北大方正集团有限公司 | 富客户端的文件断点续传方法及系统 |
CN103986764A (zh) * | 2014-05-16 | 2014-08-13 | 百度在线网络技术(北京)有限公司 | 用于多客户端协同文件上传的设备和方法 |
CN104468843A (zh) * | 2014-12-31 | 2015-03-25 | 浪潮软件股份有限公司 | 一种文件上传方法及装置 |
CN107222459A (zh) * | 2017-04-27 | 2017-09-29 | 广州慧扬健康科技有限公司 | 网络连接协商方法 |
CN110022332A (zh) * | 2018-01-09 | 2019-07-16 | 武汉斗鱼网络科技有限公司 | 一种超文本传输安全协议代理方法、装置、设备及介质 |
-
2020
- 2020-10-27 CN CN202011160184.XA patent/CN112217903B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102055784A (zh) * | 2009-11-06 | 2011-05-11 | 北大方正集团有限公司 | 富客户端的文件断点续传方法及系统 |
CN103986764A (zh) * | 2014-05-16 | 2014-08-13 | 百度在线网络技术(北京)有限公司 | 用于多客户端协同文件上传的设备和方法 |
CN104468843A (zh) * | 2014-12-31 | 2015-03-25 | 浪潮软件股份有限公司 | 一种文件上传方法及装置 |
CN107222459A (zh) * | 2017-04-27 | 2017-09-29 | 广州慧扬健康科技有限公司 | 网络连接协商方法 |
CN110022332A (zh) * | 2018-01-09 | 2019-07-16 | 武汉斗鱼网络科技有限公司 | 一种超文本传输安全协议代理方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112217903A (zh) | 2021-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102779185B (zh) | 一种高可用分布式全文索引方法 | |
JP6859340B2 (ja) | グローバル情報を取得、処理および更新するための装置、システムおよび方法 | |
CN109886693B (zh) | 区块链系统的共识实现方法、装置、设备和介质 | |
EP4024815A1 (en) | Data uploading method, system and apparatus, and electronic device | |
CN109361525B (zh) | 重启分布式部署多服务的方法、装置、控制终端及介质 | |
CN111258978B (zh) | 一种数据存储的方法 | |
WO2016169237A1 (zh) | 数据处理方法及装置 | |
CN109101664B (zh) | 一种轻量级节点的数据传输方法、装置、设备和介质 | |
CN106126374A (zh) | 数据写入方法、数据读取方法及装置 | |
CN112217903B (zh) | 大文件传输方法、装置、服务器及存储介质 | |
CN111338834B (zh) | 数据存储方法和装置 | |
WO2021077742A1 (zh) | 一种业务处理方法、系统、装置及可读存储介质 | |
CN112104663A (zh) | 一种用于管理登录用户和用户设备的方法与设备 | |
EP3031172B1 (en) | Managing data feeds | |
CN112148206A (zh) | 一种数据读写方法、装置、电子设备及介质 | |
CN109582659A (zh) | 请求处理环节的记录方法、系统、装置及可读存储介质 | |
CN113438275A (zh) | 数据迁移方法、装置、存储介质及数据迁移设备 | |
CN111125168B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN109889456B (zh) | 一种数据传输方法、装置、设备、系统和存储介质 | |
CN109542860B (zh) | 基于hdfs的业务数据管理方法、终端设备 | |
CN116737662A (zh) | 业务数据处理的方法、装置、电子设备和存储介质 | |
CN114138895A (zh) | 多数据源的数据同步方法、装置、计算机设备和存储介质 | |
CN111782721B (zh) | 一种数据同步方法、装置、电子设备及存储介质 | |
CN110290435B (zh) | 光纤网络管理方法、装置及终端设备 | |
CN109254997B (zh) | 数据同步方法、系统、计算机设备和可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |