CN105208135A - 一种文件传输方法和设备 - Google Patents

一种文件传输方法和设备 Download PDF

Info

Publication number
CN105208135A
CN105208135A CN201510702198.2A CN201510702198A CN105208135A CN 105208135 A CN105208135 A CN 105208135A CN 201510702198 A CN201510702198 A CN 201510702198A CN 105208135 A CN105208135 A CN 105208135A
Authority
CN
China
Prior art keywords
file
file transfer
transfer example
described file
byte
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.)
Granted
Application number
CN201510702198.2A
Other languages
English (en)
Other versions
CN105208135B (zh
Inventor
金友兵
宋瑞霞
刘社鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Shusheng Information Technology Co ltd
Original Assignee
TIANJIN SURSEN CLOUD TECHNOLOGY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by TIANJIN SURSEN CLOUD TECHNOLOGY Co Ltd filed Critical TIANJIN SURSEN CLOUD TECHNOLOGY Co Ltd
Priority to CN201510702198.2A priority Critical patent/CN105208135B/zh
Publication of CN105208135A publication Critical patent/CN105208135A/zh
Application granted granted Critical
Publication of CN105208135B publication Critical patent/CN105208135B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols 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 Transfer Between Computers (AREA)
  • Storage Device Security (AREA)

Abstract

本发明的实施方式涉及文件传输的方法和设备。该方法包括接收按文件内容的字节顺序上传的数据,每当接收到预定大小的数据块时,调用文件传输实例对所接收的数据块执行一种或多种处理,并且将所述一种或多种处理的处理结果记录在文件传输实例包括的变量中。该方法还包括在文件传输中断后,对文件传输实例执行序列化操作而进行存储。本发明实施方式能够在文件传输时,提供对文件内容的加密、压缩、文件长度及摘要校验支持等各种处理,但减少了对底层文件系统的读写操作。

Description

一种文件传输方法和设备
技术领域
本发明的实施方式涉及文件传输的技术领域,更具体地,涉及大文件的断点续传。
背景技术
在大多数的互联网应用中,大文件传输的客户端与服务器的传输模式大致包括如下步骤:
(1)客户端发送上传文件请求,包含一个唯一的上传标识符UploadID,文件总长度length、上次文件上传中断后的位置offset、文件摘要(比如,MD5摘要)等参数。其中,在客户端第一次发送上传文件请求时,可以不发送该上次文件上传中断后的位置offset,但通常是发送为零值的offset。
(2)服务端收到上传文件请求后,检查offset参数与本地已上传的文件内容长度是否一致。如果不一致,通知客户端文件续传的断点错误。
(3)客户端开始按文件内容的字节顺序传输数据。
(4)文件传输完毕后,服务端检查上传的文件总长度与请求时的传入文件总长度length参数是否一致(长度校验),服务端重新读取一次已上传文件内容,计算文件摘要,并与请求时传入的文件摘要参数比较是否一致(内容校验)。如果有加密、压缩等的需求时,需要再对磁盘进行一次读写操作,生成新的加密、压缩后的文件,删掉上传的明文文件。
可见,在上面的文件上传流程中,在数据传输完毕后,服务端需要至少两次执行对底层文件存储系统(磁盘)的读和/或写操作,一次是计算摘要进行数据内容校验,一次是加密、压缩产生的读写操作。
发明内容
有鉴于此,本发明实施方式的目的之一旨在使得在大文件上传时对底层文件存储系统的读写操作得以减少。
根据本发明的一个方面,提供一种文件传输方法。该方法包括:接收按文件内容的字节顺序上传的数据,每当接收到预定大小的数据块时,调用文件传输实例对所接收的数据块执行一种或多种处理,并且将所述一种或多种处理的处理结果记录在文件传输实例包括的变量中;以及在文件传输中断后,对所述文件传输实例执行序列化操作而进行存储。所述处理结果针对所述一种或多种处理中的不同的处理包括以下各项中的一种或多种:所述文件的已传输部分的摘要值、所述文件的已传输的字节总数和所述文件的经处理后的字节总数。
根据本发明的实施方式,所述一种或多种处理包括针对所述文件执行的摘要计算、加密处理、压缩处理或者其组合,所述文件传输实例包括用于执行所述一种或多种处理的一个或多个接口。
根据本发明的实施方式,所述摘要计算使用的摘要算法包括MD5、SHA1和SHA512中的一种或多种,所述加密处理的加密算法包括AES、DES、3DES、IDEA和RSA中的一种或多种,所述压缩处理使用的压缩算法包括Deflate和Zip中的一种或多种。
进一步地,该方法还包括:在接收到传输中断后续传的所述文件的内容时,对存储的所述文件传输实例执行反序列化操作,调用反序列化操作后的所述文件传输实例对所接收的所述预定大小的数据块执行所述一种或多种处理。
进一步地,该方法还包括:周期性地或者每接收到预定数量的数据,对所述文件传输实例执行序列化操作而进行存储。
进一步地,该方法还包括:在确定所述文件是首次上传时,创建所述文件传输实例;和/或在确定所述文件上传完毕时,删除所述文件传输实例。
进一步地,将所述文件传输实例存储在NOSQL数据库中。
根据本发明的另一个方面,提供一种文件传输设备。该设备包括:接收和处理装置,用于接收按文件内容的字节顺序上传的数据,每当接收到预定大小的数据块时,调用文件传输实例对所接收的数据块执行一种或多种处理,将所述一种或多种处理的处理结果记录在文件传输实例包括的变量中;以及文件断点保存装置,用于在文件传输中断后,对所述文件传输实例执行序列化操作而进行存储。所述处理结果针对所述一种或多种处理中的不同的处理包括以下各项中的一种或多种:所述文件的已传输部分的摘要值、所述文件的已传输的字节总数和所述文件的已处理的字节总数。
根据本发明的又一个方面,提供一种在计算机可读存储介质中实现的计算机程序产品,所述计算机可读存储介质具有存储于其中的计算机可读程序代码部分,所述计算机可读程序代码部分被配置为执行根据前述方法。
根据本发明实施方式的技术方案,能够支持对文件的断点续传,并提供对文件内容的加密、压缩、文件长度及摘要校验支持等各种处理,但减少了对底层文件系统(磁盘)的读写操作。
从下文结合附图所做出的详细描述中,本发明的这些和其他优点和特征将变得明显,其中在整个下文描述的若干附图中,类似的元件将具有类似的编号。
附图说明
图1图示根据本发明的实施方式的文件传输方法的流程图;
图2图示根据本发明的一个具体实施例的文件传输方法的流程图;以及
图3图示根据本发明的实施方式的文件传输设备的框图。
具体实施方式
下文将参考附图更完整地描述本公开内容,其中在附图中显示了本公开内容的实施方式。但是这些实施方式可以用许多不同形式来实现并且不应该被解释为限于本文所述的实施方式。相反地,提供这些实例以使得本公开内容将是透彻和完整的,并且将全面地向本领域的熟练技术人员表达本公开内容的范围。
下面结合附图以示例的方式详细描述本发明的各种实施方式。
参考图1,其示出了根据本发明的实施方式的文件传输方法100的流程图。应当理解,图1中以虚线框示出的步骤为本发明实施方式的可选步骤,仅在部分实施方式出现。
在步骤S110,创建文件传输实例。文件传输实例可以一个或多个变量,变量用于存储各种处理的中间结果或者可以表示文件的传输进度的信息。中间结果例如可以是文件的已上传部分的摘要或者对于文件后续内容的处理有用的其他信息。可选地,文件传输实例还可以包括一个或多个接口,接口用于对接收到的文件执行各种可能的处理,并且将处理后的文件写入到文件存储系统(磁盘)中。
可以在某个文件被确定是首次开始传输时,创建针对该文件的文件传输实例。备选地,也可以在预先创建文件传输实例。
在步骤S120,接收按文件内容的字节顺序上传的数据,每当接收到预定大小的数据块时,调用文件传输实例对所接收的数据块执行一种或多种处理,并且将所述一种或多种处理的处理结果记录在文件传输实例包括的变量中。此时,文件传输实例驻留在内存中。文件传输实例可以包括对数据块执行各种处理的各种接口,也可以包括指向外部处理接口的指针变量。
处理结果针对一种或多种处理中的不同的处理可以包括文件的已传输部分的摘要值。该摘要值可以由文件传输实例中之前所包括的摘要变量值(对应于在该数据块之前该文件的已经接收部分的摘要)与所接收的数据块进行摘要计算的结果而得出,并更新文件传输实例中的摘要值。在所处理的数据块是文件的第一个上传的数据块时,可以理解为文件传输实例之前所包括的摘要变量值为零,则利用所述数据块的摘要值来更新所述文件传输实例的摘要变量值,即文件的已传输部分的摘要值。
附加地,处理结果针对一种或多种处理中的不同的处理还可以包括文件的已传输的字节总数(表示文件的已传输部分的长度)、和/或文件的已处理的字节总数(表示文件的已处理部分的长度)。
在步骤S130,在文件传输中断后,对文件传输实例执行序列化操作而进行存储。
在步骤S140,在接收到传输中断后续传的文件的内容部分时,可以跳转到步骤120继续执行。
例如,可以从存储器中读取针对该文件的文件传输实例,并且对读取的文件传输实例执行反序列化操作,调用反序列化操作后的文件传输实例对所接收的数据块执行一种或多种处理。
在步骤S150,删除文件传输实例。
可以在某个文件被确定传输完毕时,删除针对该文件的文件传输实例。备选地,该文件传输实例占据的存储空间也可以在操作系统释放。
根据本发明的实施方式,所述一种或多种处理可以包括针对文件执行的摘要计算、加密处理、压缩处理或者其组合。文件传输实例可以包括用于执行这些处理的一个或多个接口、或者指向接口的指针。
根据本发明的实施方式,文件的摘要计算所采用的算法可以包括、但不限于MD5、SHA1、SHA512等,所采用的文件加密算法可以包括、但不限于AES、DES、3DES、IDEA、RSA等,所采用的文件压缩算法可以包括、但不限于Deflate、Zip(比如gZip)等。对于各种算法的具体实现细节,可以从它们的国际规范文件中获取,在这里不再描述。
根据本发明的实施方式,文件预定大小的数据块可以是64字节、512字节、1024字节、4k字节等。数据块的大小可以根据各种处理算法所能够支持的处理单元大小而进行选择。
根据本发明的实施方式,文件传输实例用于记录表示对文件执行的各种处理的进度信息,文件传输方法100还可以包括将针对所接收的数据块执行各种处理后的数据块追加到底层文件存储系统。
在一个实施例中,服务器可以在确定是客户端首次上传某个文件而不是续传该文件时,创建其中用于记录各种处理的处理结果的各种变量为空值的文件传输实例。这样,在确定是首次传输该文件时,可以利用读取的文件传输实例中的空值变量和针对此次接收的数据块的处理结果值来更新文件传输实例的对应变量。这在算法设计上统一了文件的首次上传和传输中断后的续传。
在一个实施例中,在服务器接收客户端上传的文件时,每接收到预定大小的数据块,持续不断地进行摘要计算(用于文件完整性校验),并且将接收到的数据块追加到文件存储系统中。同时,文件传输实例对所接收的数据块计算摘要,并且根据文件传输实例中存储的摘要值和对所接收的数据块进行摘要计算的摘要值来计算已传输的文件部分的摘要。在文件传输中断时,利用最后计算的文件摘要值来更新文件传输实例所包括的摘要值,并且序列化文件传输实例以便进行存储。
在一个实施例中,在服务器接收客户端上传的文件时,每接收到预定大小的数据块,持续不断地对所接收的数据进行压缩处理,并且将压缩后的数据块追加到文件存储系统中的该文件的压缩文件尾端。同时,文件传输实例根据其中保存的此次处理之前已压缩的文件字节数加上压缩后的该数据块长度而得出此次压缩处理后的文件字节数,并据此更新文件传输实例中的与压缩处理有关的变量。附加地和可选地,文件传输实例根据其中保存的此次处理(压缩)之前已接收的文件字节数加上该数据块的预定尺寸而得出此次处理(压缩)之后已接收的文件字节数,并据此更新文件传输实例中的相关变量。在文件传输中断时,序列化文件传输实例以便进行存储。
在一个实施例中,在服务器接收客户端上传的文件时,每接收到预定大小的数据块,持续不断地对所接收的数据进行加密处理,并且将加密后的数据块追加到文件存储系统中的该文件的加密文件尾端。同时,文件传输实例根据其中保存的此次处理之前已加密的文件字节数加上加密后的该数据块长度而得出此次加密处理后的文件字节数,并据此更新文件传输实例中的与加密处理有关的变量。附加地和可选地,文件传输实例根据其中保存的此次处理(加密)之前已接收的文件字节数加上该数据块的预定尺寸而得出此次处理(加密)之后已接收的文件字节数,并据此更新文件传输实例中的相关变量。在文件传输中断时,序列化文件传输实例以便进行存储。
以上实施例中计算的文件的已接收字节数代表文件的已传输的字节总数或者已传输部分的长度,可以在文件传输中断后进行续传时用于帮助确定上次文件上传中断后的位置offset,即文件传输断点。然而,应当理解,本发明实施方式还可以使用其他常规的方式来确定文件传输断点,比如,由客户端向服务器发送该位置offset。
下面具体描述根据本发明实施方式的文件传输方法的示例性实现过程。应当理解,本发明的实施方式的文件传输方法可以适用于各种网络环境下的客户端和服务器之间的支持断点续传的文件上传,包括互联网、P2P网络、自组织网等。
还应当理解,虽然在下文的描述中,对于各种处理算法的接口是以Java语言进行描述,但是,这些接口当然可以使用其他的编程语言来实现,比如C#、C++、PHP等。
可以定义一种数据处理算法接口类(AlgorithmHandler),其功能是按数据(字节)输入顺序数据进行算法处理,支持算法实例的序列化与反序列化。作为示例,AlgorithmHandler接口类可以包含下面几个接口:
(1)数据处理(比如加密、压缩、摘要计算等)接口:update
paramb输入的需要处理的数据,数据类型是字节数组
returnbyte[]返回处理后的数据,如果仅是计算摘要的算法,则要被写入磁盘的处理后的数据、即输出数据,与输入数据是相同的。
publicbyte[]update(byte[]b);
(2)数据处理完毕,执行doFinal接口,其后不可再执行update接口
returnbyte[]返回处理后的数据。例如,一般摘要算法返回0长度字节数组
publicbyte[]doFinal();
(3)输入的字节总数接口:getTotalIn
returnlong获取文件的已传输部分的长度
publiclonggetTotalIn();
(4)输出的字节总数接口:getTotalOut
returnlong获取文件的已处理部分的长度。例如,一般摘要算法返回0长度
publiclonggetTotalOut();
(5)获取摘要接口:getDigest
returnbyte[]返回当前输入数据的摘要值,用于文件的内容校验
//如果当前不是摘要算法实现
throwsUnsupportedOperationException
publicbyte[]getDigest();
(6)序列化接口:toBytes
returnbyte[]把当前的算法实现类,序列化为字节数组
publicbyte[]toBytes();
(7)反序列化接口:toAlgorithmHandler
paramb序列化后字节数组,把字节数组反序列化为一个算法实例
publicAlgorithmHandlertoAlgorithmHandler(byte[]b);
一般情况下,服务器对客户端所上传的文件的存储服务可能涉及到摘要、加密、压缩等处理需求。对于摘要、加密、压缩所可能采用的比如MD5、SHA1、SHA512、DES、AES、RSA、Deflate、Zip等各种算法都是按字节先后顺序依次处理的,因此都可以实现序列化和反序列化操作。根据本发明的实施方法,为了让各种算法在中断后能实现断点续传处理,因此包含了对各种算法的序列化和反序列化接口。作为示例,提供了如下的6个类,其均实现了AlgorithmHandler中定义的7个接口:
本领域技术人员应当理解,根据实际应用的需要,可以类似地定义更多的处理算法的实现类,并且这些处理算法的实现类可以相应算法的标准规范进行开发。
此外,实际应用中,对数据处理可能需要多个算法组合。在一个实施方实中,按照AlgorithmHandler定义的接口实现一个如下的多重组合算法类(MultiAlgorithmHandler)的实例handler:
在实际应用中,上层应用可以根据业务需求按顺序组合算法。在另外的实施方式,可以定义不同的多种组合算法类,例如在其中分别计算明文的SHA1摘要、执行DES加密、计算输入的字节总数和计算输出的(经处理后的)字节总数等。
有了这些类库的支持,在一个实施例中,对文件、特别是大文件的上传(支持断点续传)流程可以如下进行:
(1)客户端第一次上传某个文件,发送文件上传请求,包含唯一的上传标识符UploadID(可作为临时文件名),文件总长度length,文件摘要MD5等参数。可选地,客户端也可以在此步骤中发送值为0值或者空值的上次文件上传中断后的位置offset值。
(2)服务端同意接受数据,客户端开始按文件内容的字节顺序传输数据。
(3)服务端在陆续收到数据后,需要对数据进行处理并将数据进行处理并将处理后的数据写入到本地文件系统,所以首先要构建一个多重组合算法实例MultiAlgorithmHandler。
(4)收到数据后,执行MultiAlgorithmHandler实例所包括的各个类的update接口,对数据进行多重处理,返回处理后的数据,将其顺序写入本地文件系统以UploadID命名的文件中。在网络故障或客户端主动中断造成数据传输中断的情况下,服务端在捕捉到此中断后,需要将MultiAlgorithmHandler实例序列化为字节数组(通过toBytes()接口)保存起来。可选地,为了防止服务端突然宕机造成传输进度(即MultiAlgorithmHandler实例)无法保存,一般可设置为每传输64M或32M大小的数据强制保存一次。进一步地,也可以按预先设置的传输时间段进行保存,该传输时间段可以依赖于传输速率而进行调整。
(5)在客户端准备续传文件时,可以向服务器请求上次传输文件中断后的位置offset,这时服务器需要将上次中断后保存的MultiAlgorithmHandler序列化字节数组通过反序列化接口(toAlgorithmHandler(byte[]b))反序列化为实例,调用getTotalIn()接口,可以获得该文件已传输部分的长度,并通知客户端按照此长度的offset续传。应当理解,此时的MultiAlgorithmHandler实例包括了计算输入的字节总数的接口,比如getTotalIn()。附加地或可替换地,在客户端准备续传文件时,也可以如常规的那样,由客户端向服务器发送包括上次文件上传中断后的位置offset的文件上传请求,以便确认文件传输中断的断点。
(6)客户端按照和服务器协商的断点续传文件内容数据。
(7)服务端在收到续传数据后,继续执行MultiAlgorithmHandler实例的update接口,将返回的数据续写进底层文件系统。应当注意,表示服务端对文件(比如,加密后的密文、压缩后的压缩文件)续写的位置(从第几个字节后开始续写)的参数可以从getTotalOut()中得到。附加地或可替换地,在MultiAlgorithmHandler实例不包括计算输出的字节总数的接口、比如getTotalOut()的情况下,服务端可以根据执行各种处理所使用不同的算法的参数来确定续写位置。作为一个示例,在加密算法,比如DES,对于传入的明文数据以8个字节作为一个处理单元进行加密的情况下,如果在文件传输中断时,服务器还余下3个字节无法处理,则MultiAlgorithmHandler实例可以单独以明文的形式保存着3个字节,在下次续传数据开始时,将接收到的头5个字节和从存储器中读出的3个字节一起作为一个加密处理单元进行处理。可替换地,在对接收的文件数据单独使用加密的情况下,服务器还可以选择在传输中断时直接舍弃未能加密处理的这3个字节,并且将保存的上次文件上传中断后的位置offset设置为在已经完成加密处理的最后一个处理单元结尾处。
(8)客户端传输完毕,断开数据传输。服务端可以通过getTotalIn()得到该文件传输的总长度,与请求上传时传入的length参数比较,不一致时向客户端返回长度校验错误。附加地或者可替换地,服务端也可以通过在MultiAlgorithmHandler实例照中计算的上传数据的摘要与在客户端发送的文件上传请求中所包括的文件摘要,比如MD5摘要,进行对比,进行文件摘要校验,不一致时向客户端返回文件内容。摘要的计算比如通过接口getDigest()实现。
(9)服务端执行doFinal()接口,完成算法处理,将返回的字节数组byte[]写入底层文件系统。表示该文件上传完毕,不可再续写。附加地,在确定文件数据传输完毕时,可以释放存储MultiAlgorithmHandler实例所占用的存储空间。
(10)向客户端返回文件上传完毕。
根据本发明的一个实施方式,对于MultiAlgorithmHandler序列化数据的存储,可以生成一个临时文件来进行存储。例如,将上传加密后的文件写入文件UploadID.dat,在相同路径下生成一个UploadID.Cfg文件,用来保存上传中断时的MultiAlgorithmHandler序列化数据。这样带来的问题是,cfg文件的多次读写,包括最终的删除操作,都很耗费底层文件系统的IO资源。
较佳地,根据本发明的另一个实施方式,对于MultiAlgorithmHandler序列化数据的存储,采用开源的嵌入式的NOSQL数据库(Berkeley_DB_Java_Edition)来存储序列化数据(这些序列化数据长度很小,不超过300K),借助NOSQL数据库的高速缓存可以提供比直接访问底层文件系统更好的读写性能,嵌入在存储服务内运行,不会产生额外的网络开销。数据库文件存入底层文件系统,由底层文件系统实现多副本问题。
图2示出了根据本发明的一个具体实施例的文件传输流图,其中服务器对客户端上传的文件要依次执行MD5摘要计算、Deflate压缩和AES加密处理。在图2所示的实施例中,预先定义以4k字节大小的数据块进行文件处理。
应当注意,尽管出于简化说明的目的将该方法表示和描述为一连串动作,但是应理解和认识到要求保护的主题内容将不受这些动作的执行顺序所限制,因为一些动作可以按照与这里示出和描述的顺序不同的顺序出现或者与其它动作并行地出现,同时一些动作还可能包括若干子步骤,而这些子步骤之间可能出现时序上交叉执行的可能。另外,可能并非所有图示的动作是实施根据所附权利要求书所述的方法所必须的。再者,前述步骤的描述不排除该方法还可以包括可能取得附加效果的附加步骤。
图3示意性根据本发明各种实施方式的文件传输设备300的框图。设备300可以包括:接收和处理装置320,用于接收按文件内容的字节顺序上传的数据,每当接收到预定大小的数据块时,调用文件传输实例对所接收的数据块执行一种或多种处理,将所述一种或多种处理的处理结果记录在文件传输实例包括的变量中;以及文件断点保存装置330,用于在文件传输中断后,对所述文件传输实例执行序列化操作而进行存储。处理结果针对所述一种或多种处理中的不同的处理包括以下各项中的一种或多种:所述文件的已传输部分的摘要值、所述文件的已传输的字节总数和所述文件的已处理的字节总数。可选地,设备300还可以包括文件传输实例创建装置310、中断续传装置340和文件传输实例释放装置350。
应当理解,设备300中记载的装置310-350分别与参考图1描述的方法100中的步骤S110-S150相对应。由此,上文针对图1描述的操作和特征同样适用于设备300及其中包含的装置,重复的内容在此不再赘述。
本发明的教导还可以实现为一种计算机可读存储介质的计算机程序产品,包括计算机程序代码,当计算机程序代码由处理器执行时,其使得处理器能够按照本发明实施方式的方法来实现如本文实施方式所述的文件传输方法。计算机存储介质可以为任何有形媒介,例如软盘、CD-ROM、DVD、硬盘驱动器、甚至网络介质等。
根据本发明的实施方式的客户端向服务器的文件断点续传方案,包括前述方法、设备和计算机程序产品,避免了由于计算摘要、执行加密运算或执行压缩运算等业务需求所造成的对底层文件系统的二次读写操作,并且使服务器对客户端的上传响应更及时,客户端数据传输完毕,服务端的校验及数据持久化工作也跟着完毕,不会延迟。而且,将这些处理的执行分散在数据传输中断时进行,就对一个文件进行处理整体而言,不增加对于该文件处理的计算量。
应当理解,本发明的实施方式的方法或设备可以被以软件、硬件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的方法和设备可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的方法和设备可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
应当理解,尽管在上文的详细描述中提及了系统的若干装置或子装置,但是这种划分仅仅是示例性而非强制性的。实际上,根据本发明的示例性实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置中实现。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来实现。
还应当理解,为了不模糊本发明的实施方式,说明书仅对一些关键、未必必要的技术和特征进行了描述,而可能未对一些本领域技术人员能够实现的特征做出说明。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种文件传输方法,其特征在于,包括:
接收按文件内容的字节顺序上传的数据,每当接收到预定大小的数据块时,调用文件传输实例对所接收的数据块执行一种或多种处理,并且将所述一种或多种处理的处理结果记录在文件传输实例包括的变量中;以及
在文件传输中断后,对所述文件传输实例执行序列化操作而进行存储,
其中,所述处理结果针对所述一种或多种处理中的不同的处理包括以下各项中的一种或多种:
-所述文件的已传输部分的摘要值;
-所述文件的已传输的字节总数;和
-所述文件的经处理后的字节总数。
2.根据权利要求1所述的方法,其特征在于,所述一种或多种处理包括针对所述文件执行的摘要计算、加密处理、压缩处理或者其组合,所述文件传输实例包括用于执行所述一种或多种处理的一个或多个接口。
3.根据权利要求2所述的方法,其特征在于,所述摘要计算使用的摘要算法包括MD5、SHA1和SHA512中的一种或多种,所述加密处理的加密算法包括AES、DES、3DES、IDEA和RSA中的一种或多种,所述压缩处理使用的压缩算法包括Deflate和Zip中的一种或多种。
4.根据权利要求1所述的方法,其特征在于,还包括:在接收到传输中断后续传的所述文件的内容时,对存储的所述文件传输实例执行反序列化操作,调用反序列化操作后的所述文件传输实例对所接收的所述预定大小的数据块执行所述一种或多种处理。
5.根据权利要求1-4中任一项所述的方法,其特征在于,还包括:
周期性地或者每接收到预定数量的数据,对所述文件传输实例执行序列化操作而进行存储。
6.根据权利要求1-5中任一项所述的方法,其特征在于,还包括:
在确定所述文件是首次上传时,创建所述文件传输实例;和/或
在确定所述文件上传完毕时,删除所述文件传输实例。
7.根据权利要求1-6中任一项所述的方法,其特征在于,将所述文件传输实例存储在NOSQL数据库中。
8.一种文件传输设备,其特征在于,包括:
接收和处理装置,用于接收按文件内容的字节顺序上传的数据,每当接收到预定大小的数据块时,调用文件传输实例对所接收的数据块执行一种或多种处理,将所述一种或多种处理的处理结果记录在文件传输实例包括的变量中;以及
文件断点保存装置,用于在文件传输中断后,对所述文件传输实例执行序列化操作而进行存储,
其中,所述处理结果针对所述一种或多种处理中的不同的处理包括以下各项中的一种或多种:
-所述文件的已传输部分的摘要值;
-所述文件的已传输的字节总数;和
-所述文件的已处理的字节总数。
9.根据权利要求8所述的文件传输设备,其特征在于,所述一种或多种处理包括针对所述文件执行的摘要计算、加密处理、压缩处理或者其组合,所述文件传输实例包括用于执行所述一种或多种处理的一个或多个接口。
10.一种在计算机可读存储介质中实现的计算机程序产品,所述计算机可读存储介质具有存储于其中的计算机可读程序代码部分,所述计算机可读程序代码部分被配置为执行根据权利要求1-7所述的方法。
CN201510702198.2A 2015-10-26 2015-10-26 一种文件传输方法和设备 Active CN105208135B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510702198.2A CN105208135B (zh) 2015-10-26 2015-10-26 一种文件传输方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510702198.2A CN105208135B (zh) 2015-10-26 2015-10-26 一种文件传输方法和设备

Publications (2)

Publication Number Publication Date
CN105208135A true CN105208135A (zh) 2015-12-30
CN105208135B CN105208135B (zh) 2019-06-14

Family

ID=54955558

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510702198.2A Active CN105208135B (zh) 2015-10-26 2015-10-26 一种文件传输方法和设备

Country Status (1)

Country Link
CN (1) CN105208135B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105872041A (zh) * 2016-03-29 2016-08-17 广州酷狗计算机科技有限公司 操作对象的处理方法及装置
CN106790445A (zh) * 2016-12-02 2017-05-31 乐视控股(北京)有限公司 基于Samba协议的数据传输方法、装置及电子设备
CN108270546A (zh) * 2016-12-30 2018-07-10 北京酷我科技有限公司 一种信息传输的方法及系统
CN109240721A (zh) * 2018-08-24 2019-01-18 江苏恒宝智能系统技术有限公司 一种mcu在线升级的方法
CN109302368A (zh) * 2017-06-19 2019-02-01 中兴通讯股份有限公司 一种文件处理方法和服务器
CN109525589A (zh) * 2018-12-07 2019-03-26 象翌微链科技发展有限公司 一种基于高速文件传输加密压缩的优化方法及系统
CN109862002A (zh) * 2019-01-24 2019-06-07 上海泰宇信息技术股份有限公司 一种可追溯数据安全策略及系统
CN111131455A (zh) * 2019-12-24 2020-05-08 深信服科技股份有限公司 数据代理方法、装置、设备及存储介质
CN113672307A (zh) * 2021-07-06 2021-11-19 浙江大华技术股份有限公司 数据处理方法、电子设备和计算机可读存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101651709B (zh) * 2009-09-01 2012-09-05 中国科学院声学研究所 一种p2p下载文件完整性校验方法
CN103731451B (zh) * 2012-10-12 2018-10-19 腾讯科技(深圳)有限公司 一种文件上传的方法及系统
CN103634407B (zh) * 2013-12-11 2016-08-17 北京荣之联科技股份有限公司 一种云存储文件断点续传的方法和装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105872041A (zh) * 2016-03-29 2016-08-17 广州酷狗计算机科技有限公司 操作对象的处理方法及装置
CN105872041B (zh) * 2016-03-29 2019-11-05 广州酷狗计算机科技有限公司 操作对象的处理方法及装置
CN106790445A (zh) * 2016-12-02 2017-05-31 乐视控股(北京)有限公司 基于Samba协议的数据传输方法、装置及电子设备
CN108270546A (zh) * 2016-12-30 2018-07-10 北京酷我科技有限公司 一种信息传输的方法及系统
CN109302368A (zh) * 2017-06-19 2019-02-01 中兴通讯股份有限公司 一种文件处理方法和服务器
CN109240721A (zh) * 2018-08-24 2019-01-18 江苏恒宝智能系统技术有限公司 一种mcu在线升级的方法
CN109525589A (zh) * 2018-12-07 2019-03-26 象翌微链科技发展有限公司 一种基于高速文件传输加密压缩的优化方法及系统
CN109862002A (zh) * 2019-01-24 2019-06-07 上海泰宇信息技术股份有限公司 一种可追溯数据安全策略及系统
CN109862002B (zh) * 2019-01-24 2021-06-11 上海泰宇信息技术股份有限公司 一种可追溯数据安全保真方法
CN111131455A (zh) * 2019-12-24 2020-05-08 深信服科技股份有限公司 数据代理方法、装置、设备及存储介质
CN113672307A (zh) * 2021-07-06 2021-11-19 浙江大华技术股份有限公司 数据处理方法、电子设备和计算机可读存储介质

Also Published As

Publication number Publication date
CN105208135B (zh) 2019-06-14

Similar Documents

Publication Publication Date Title
CN105208135A (zh) 一种文件传输方法和设备
KR102069940B1 (ko) 페이지 기반 압축 저장 관리
EP3108371B1 (en) Modified memory compression
CN111090645B (zh) 基于云存储的数据传输方法、装置及计算机设备
CN111078147B (zh) 一种缓存数据的处理方法、装置、设备及存储介质
US8898351B2 (en) Dynamic compression of an I/O data block
US11102299B2 (en) Data processing system
JP2008217209A (ja) 差分スナップショット管理方法、計算機システム及びnas計算機
US10652350B2 (en) Caching for unique combination reads in a dispersed storage network
WO2012056493A1 (en) File management method and computer system
US20140201316A1 (en) Streaming zip
US20170004086A1 (en) Cache management method for optimizing read performance of distributed file system
CN113778320A (zh) 网卡以及网卡处理数据的方法
US20120173773A1 (en) Dynamic compression of an i/o data block
US20180267855A1 (en) Method for partial updating data content in a distributed storage network
US11314813B2 (en) Apparatus for guaranteeing integrity of state database in blockchain-based environment and method thereof
US20180239552A1 (en) System and methods for in-storage on-demand data decompression
JP2005149283A (ja) 情報処理システム、情報処理システムの制御方法及びプログラム
US20220121359A1 (en) System and method to utilize a composite block of data during compression of data blocks of fixed size
CN109308288B (zh) 数据处理方法及装置
US11829798B2 (en) System and method to improve data compression ratios for fixed block sizes in a smart data accelerator interface device
CN104620563B (zh) 一种用于减少计算设备的网络使用的方法和系统
US20220107738A1 (en) Read controller and input/output controller
US20230342208A1 (en) Systems, methods, and apparatus to identify functions for computational devices
EP4131004A1 (en) Systems, methods, and apparatus to identify functions for computational devices

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PD01 Discharge of preservation of patent

Date of cancellation: 20210523

Granted publication date: 20190614

PD01 Discharge of preservation of patent
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Room 645dd18, aviation industry support center No.1, Baohang Road, Tianjin Binhai New Area Airport Economic Zone, 300308

Patentee after: Tianjin Zhongcheng Star Technology Co.,Ltd.

Address before: Room 645dd18, aviation industry support center No.1, Baohang Road, Tianjin Binhai New Area Airport Economic Zone, 300308

Patentee before: TIANJIN SURDOC Corp.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210716

Address after: 100089 No. 4060, podium, 4th floor, 69 Zizhuyuan Road, Haidian District, Beijing

Patentee after: Beijing Shusheng cloud Technology Co.,Ltd.

Address before: Room 645dd18, aviation industry support center No.1, Baohang Road, Tianjin Binhai New Area Airport Economic Zone, 300308

Patentee before: Tianjin Zhongcheng Star Technology Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230506

Address after: 1101-13, 11th floor, building 1, courtyard 1, Shangdi 10th Street, Haidian District, Beijing 100085

Patentee after: Beijing Shusheng Information Technology Co.,Ltd.

Address before: 100089 No. 4060, podium, 4th floor, 69 Zizhuyuan Road, Haidian District, Beijing

Patentee before: Beijing Shusheng cloud Technology Co.,Ltd.