CN112039932B - 文件传输方法和装置 - Google Patents

文件传输方法和装置 Download PDF

Info

Publication number
CN112039932B
CN112039932B CN201910477022.XA CN201910477022A CN112039932B CN 112039932 B CN112039932 B CN 112039932B CN 201910477022 A CN201910477022 A CN 201910477022A CN 112039932 B CN112039932 B CN 112039932B
Authority
CN
China
Prior art keywords
file
target
target file
browser
spliced
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
Application number
CN201910477022.XA
Other languages
English (en)
Other versions
CN112039932A (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.)
State Grid Corp of China SGCC
State Grid Information and Telecommunication Co Ltd
Beijing Guodiantong Network Technology Co Ltd
Original Assignee
State Grid Corp of China SGCC
State Grid Information and Telecommunication Co Ltd
Beijing Guodiantong Network 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 State Grid Corp of China SGCC, State Grid Information and Telecommunication Co Ltd, Beijing Guodiantong Network Technology Co Ltd filed Critical State Grid Corp of China SGCC
Priority to CN201910477022.XA priority Critical patent/CN112039932B/zh
Publication of CN112039932A publication Critical patent/CN112039932A/zh
Application granted granted Critical
Publication of CN112039932B publication Critical patent/CN112039932B/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]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请提供了一种文件传输方法和装置,该方法包括:获取浏览器发送的文件上传请求;向浏览器返回针对目标文件的文件切分方式;接收浏览器发送的目标文件的文件片段;将当前接收到的文件片段与当前时刻之前接收到的目标文件的文件片段拼接,得到目标文件对应的拼接文件;在未接收到目标文件的全部数据的情况下,指示浏览器传输目标文件中位于接收到的文件片段之后的下一个文件片段;在判断出已接收到目标文件的全部数据的情况下,将当前拼接出的拼接文件存储为文件名称对应的完整版文件。本申请有利于减少由于信号中断而导致文件重复上传所需的耗时。

Description

文件传输方法和装置
技术领域
本申请涉及通信技术领域,尤其涉及一种文件传输方法和装置。
背景技术
在通过客户端向服务器上传文件的过程中,如果由于网络信号质量较差或者断电等原因导致网络中断,就会使得文件上传失败。
而一旦文件上传失败,则需要重新向服务器上传该文件。然而,在需要上传的文件较大的情况下,重新上传文件必须需要耗费较长的时间;而且,在一些施工等特殊场合下,经常会出现信号中断的情况,如果每次文件上传过程中信号中断,那么就可能需要用户多次频繁的上传该文件才可能最终完成文件上传,从而导致文件上传服务器的操作较为复杂,且耗时较长。
发明内容
有鉴于此,本申请提供了一种文件传输方法和装置,以有利于减少由于信号中断而导致文件重复上传所需的耗时。
为实现上述目的,本申请提供了一种文件传输方法,应用于服务器,包括:
获取浏览器发送的文件上传请求,所述文件上传请求携带有待上传的目标文件的文件名称以及文件大小;
向所述浏览器返回针对所述目标文件的文件切分方式;
接收所述浏览器发送的所述目标文件的文件片段,所述文件片段属于所述浏览器按照所述文件切分方式对所述目标文件切分所得到的至少一个文件片段;
将当前接收到的所述文件片段与当前时刻之前接收到的所述目标文件的文件片段拼接,得到所述目标文件对应的拼接文件;
依据所述目标文件的文件大小以及当前拼接出的拼接文件的文件大小,判断是否接收到所述目标文件的全部数据;
在未接收到所述目标文件的全部数据的情况下,指示所述浏览器传输所述目标文件中位于接收到的所述文件片段之后的下一个文件片段;
在判断出已接收到所述目标文件的全部数据的情况下,将当前拼接出的拼接文件存储为所述文件名称对应的完整版文件。
优选的,所述向所述浏览器返回针对所述目标文件的文件切分方式,包括:
检测是否存储有所述目标文件对应的拼接文件;
在未存储有所述目标文件对应的拼接文件的前提下,向所述浏览器返回针对所述目标文件的第一文件切分方式,所述第一文件切分方式用于指示以所述目标文件的文件起始位置为文件切分的起始点;
在存储有所述目标文件对应的拼接文件的前提下,依据存储的所述目标文件的拼接文件的文件大小,确定所述目标文件的传输中断位置,并向所述浏览器返回针对所述目标文件的第二文件切分方式,所述第二文件切分方式用于指示以所述目标文件的传输中断位置为文件切分的起始点,对所述目标文件中处于所述传输中断位置之后的文件部分进行文件切分;所述传输中断位置为所述目标文件中尚未传输至所述服务器的数据部分的起始位置。
优选的,所述检测是否存储有所述目标文件对应的拼接文件,包括:
检测是否存储有所述目标文件的文件名称对应的缓存文件;
在未存储有所述目标文件对应的拼接文件的前提下,还包括:
创建所述目标文件的文件名称对应的缓存文件;
所述将当前接收到的所述文件片段与当前时刻之前接收到的所述目标文件的文件片段拼接,得到所述目标文件对应的拼接文件,包括:
将当前接收到的所述文件片段与所述缓存文件中缓存的所述目标文件的文件片段拼接,得到拼接后的缓存文件。
优选的,所述将当前拼接出的拼接文件存储为所述文件名称对应的完整版文件,包括:
将当前拼接出的缓存文件作为该文件名称的完整版文件存储到指定存储区;
删除缓存区缓存的所述缓存文件。
优选的,在所述向所述浏览器返回针对所述目标文件的第一文件切分方式以及向所述浏览器返回针对所述目标文件的第二文件切分方式的同时,还包括:
向所述浏览器返回文件传输指示,所述文件传输指示用于指示所述浏览器按照切分出的至少一个文件片段的顺序,依次传输文件片段。
优选的,所述文件切分方式包括:文件切分的起始点以及文件切分大小。
又一方面,本申请还提供了一种文件传输装置,应用于服务器,包括:
请求获取单元,用于获取浏览器发送的文件上传请求,所述文件上传请求携带有待上传的目标文件的文件名称以及文件大小;
切分指示单元,用于向所述浏览器返回针对所述目标文件的文件切分方式;
片段接收单元,用于接收所述浏览器发送的所述目标文件的文件片段,所述文件片段属于所述浏览器按照所述文件切分方式对所述目标文件切分所得到的至少一个文件片段;
片段拼接单元,用于将当前接收到的所述文件片段与当前时刻之前接收到的所述目标文件的文件片段拼接,得到所述目标文件对应的拼接文件;
传输判断单元,用于依据所述目标文件的文件大小以及当前拼接出的拼接文件的文件大小,判断是否接收到所述目标文件的全部数据;
进度指示单元,用于在未接收到所述目标文件的全部数据的情况下,指示所述浏览器传输所述目标文件中位于接收到的所述文件片段之后的下一个文件片段;
文件存储单元,用于在判断出已接收到所述目标文件的全部数据的情况下,将当前拼接出的拼接文件存储为所述文件名称对应的完整版文件。
优选的,所述切分指示单元,包括:
数据检测单元,用于检测是否存储有所述目标文件对应的拼接文件;
第一切分指示单元,用于在未存储有所述目标文件对应的拼接文件的前提下,向所述浏览器返回针对所述目标文件的第一文件切分方式,所述第一文件切分方式用于指示以所述目标文件的文件起始位置为文件切分的起始点;
第二切分指示单元,用于在存储有所述目标文件对应的拼接文件的前提下,依据存储的所述目标文件的拼接文件的文件大小,确定所述目标文件的传输中断位置,并向所述浏览器返回针对所述目标文件的第二文件切分方式,所述第二文件切分方式用于指示以所述目标文件的传输中断位置为文件切分的起始点,对所述目标文件中处于所述传输中断位置之后的文件部分进行文件切分;所述传输中断位置为所述目标文件中尚未传输至所述服务器的数据部分的起始位置。
优选的,所述数据检测单元,具体为,用于检测是否存储有所述目标文件的文件名称对应的缓存文件;
所述装置还包括:文件创建单元,用于在未存储有所述目标文件对应的拼接文件的前提下,创建所述目标文件的文件名称对应的缓存文件;
所述片段拼接单元,具体为,用于将当前接收到的所述文件片段与所述缓存文件中缓存的所述目标文件的文件片段拼接,得到拼接后的缓存文件。
优选的,所述文件存储单元,包括:
文件存储子单元,用于在判断出已接收到所述目标文件的全部数据的情况下,将当前拼接出的缓存文件作为该文件名称的完整版文件存储到指定存储区;
缓存删除单元,用于删除缓存区缓存的所述缓存文件。
由以上可知,在本申请实施例中,服务器在接收到浏览器上传的文件传输请求之后,会指示浏览器对待上传的目标文件进行切分,以便浏览器将该目标文件切分后依次向服务器传输该目标文件切分后的各个文件片段。而服务器会分批接收目标文件的各个文件片段,并将接收到的各个文件片段进行拼接,这样,即使出现网络信号中断导致目标文件的文件片段未全部上传到服务器,由于服务器侧已经保存了该目标文件的部分文件片段,在网络信号恢复后,用户可以通过浏览器仅仅向服务器传输该目标文件中尚未被传输的文件片段,而无需重新上传整个目标文件,从而有利于避免由于信号中断等原因导致目标文件被全部重新传输的情况,进而有利于降低由于信号中断而导致目标文件传输复杂度,并有利于减少传输目标文件所需的耗时。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本申请一种文件传输方法一个实施例的流程示意图;
图2示出了本申请一种文件传输方法又一个实施例的流程示意图;
图3示出了本申请一种文件传输装置的一种组成结构示意图。
具体实施方式
本申请实施例的方案适用于向服务器上传文件,尤其是数据量较大的文件。通过本实施例的方案可以实现文件数据的分段传输,有利于避免网络中断而导致重新传输整个文件的情况。
如,参见图1,其示出了本申请一种文件传输方法一个实施例的流程示意图,本实施例的方法应用于服务器,本实施例可以包括:
S101,获取浏览器发送的文件上传请求。
其中,文件上传请求携带有待上传的目标文件的文件名称以及文件大小。为了便于区分,将待上传的文件称为目标文件。其中,目标文件的文件大小用于表征该目标文件包含的数据量的多少,如,目标文件的文件大小可以为100M等。
可以理解的是,在本申请实施例中,可以由任意浏览器向服务器发送该文件上传请求,从而提高文件向服务器上传的便利性。相应的,用户可以在浏览器提供的文件上传界面中进行文件选择操作,以使得浏览器可以确定待上传的目标文件,并获得待上传的目标文件的文件名称以及文件大小。
可以理解的是,浏览器发送的该文件上传请求可以是编码后的文件上文请求,在该种情况下,服务器需要对文件上传请求进行解码,以解码出该待上传的目标文件的文件名称和文件大小等数据。
S102,向该浏览器返回针对该目标文件的文件切分方式。
与现有的不同,本申请实施例中,服务器在接收到浏览器的文件上传请求之后,会向浏览器返回文件切分方式,以通过文件切分方式指示浏览器对目标文件进行切分,以便浏览器依据切分后的目标文件的各个文件片段,对目标文件进行分段传输。
其中,该文件切分方式指示了切分该目标文件的切分方式。如,该文件切分方式可以包括目标文件的切分起始点以及文件切分大小等等。该切分起始点用于指示从目标文件的哪个位置点开始对该目标文件进行切分,例如,在服务器尚未接收过该目标文件切分出的文件片段的情况下,该切分起始点可以为该目标文件的文件起始位置。文件切分大小可以用于该目标文件切分出的文件片段的大小,例如,文件切分大小可以指示按照每个文件片段的大小为5M的原则,将目标文件进行切分。
相应的,浏览器可以按照该文件切分方式对目标文件进行切分,以将目标文件切分为至少一个文件片段。其中,文件片段是指对文件切分所得到的各个分片,因此,每个文件片段都是文件的一部分。
如,浏览器可以基于HTML5的文件切片技术对目标文件进行切分。例如,使用slice方法对目标文件进行切分。当然,浏览器对目标文件切分的技术实现方式可以有多种,本申请对此不加限制。
可以理解的是,浏览器在对目标文件进行切分之后,可以按照目标文件切分出的至少一个文件片段的先后顺序,依次向服务器传输各个文件片段,且每次向服务器传输一个文件片段。
可选的,服务器在反馈该文件切分方式的同时,还可以向浏览器返回文件传输指示,该文件传输指示用于至少浏览器按照切分出的至少一个文件片段的顺序,依次传输各个文件片段。
S103,接收该浏览器发送的该目标文件的文件片段。
其中,该文件片段属于该浏览器按照该文件切分方式对目标文件切分所得到的至少一个文件片段。该文件片段为该目标文件的一部分。
可以理解的是,由于浏览器是依次传输文件片段的,因此,服务器每次仅仅接收到一个文件片段,因此,当前时刻接收到的该文件片段只是目标文件的至少一个文件片段中的一个。
可以理解的是,为了区分各个文件片段所属的文件,则浏览器发送的文件片段可以包含该文件片段所属的目标文件的文件名称。相应的,服务器接收到的该文件片段携带有该目标文件的文件名称。
S104,将当前接收到的该文件片段与当前时刻之前接收到的该目标文件的文件片段拼接,得到该目标文件对应的拼接文件。
可以理解的是,由于文件片段仅仅是目标文件切分出的一个分片,为了还原出该目标文件,在服务器在接收到文件片段之后,会将当前接收到的文件片段与当前时刻之前接收到的该属于该目标文件的文件片段进行拼接。
可以理解的是,如果服务器在当前接收到的文件片段之前,未接收过该目标文件的其他文件片段,则该服务器可以直接存储当前接收到的文件片段。
可选的,服务器可以创建与目标文件的文件名称对应的缓存文件,相应的,可以将接收到的该目标文件的文件片段存储到该缓存文件中,在此基础上,可以将当前接收到的文件片段与当前时刻之前存储到该缓存文件中的文件片段进行拼接,从而使得该缓存文件存储多个文件片段拼接成的拼接文件。
可以理解的是,正常情况下,浏览器是按照目标文件切分出的各个文件片段的先后顺序,依次向服务器传输各个拼接文件,因此,服务器根据接收到的各个文件片段的先后顺序便可以确定该文件片段在目标文件中的位置。
为了使得服务器能够更为可靠的识别出各个文件片段在目标文件中的顺序,服务器接收到的文件片段还可以携带该文件片段在该目标文件中的位置顺序标识,如,目标文件被切分为10个文件片段,则按照文件片段的先后顺序可以依次标识为文件片段1、文件片段2、文件片段3……文件片段10。相应的,服务器可以依据文件片段的位置顺序标识,检测是否存在文件片段存储错误,并在确认文件片段不存在传输异常的情况下,拼接接收到的文件片段。
S105,依据该目标文件的文件大小以及当前拼接出的拼接文件的文件大小,判断是否接收到该目标文件的全部数据。
如,如果拼接出的拼接文件的文件大小与目标文件的文件大小相同,则说明服务器已经接收到该目标文件切分出的所有文件片段,即接收到目标文件的全部数据,目标文件传输完成。
S106,在未接收到该目标文件的全部数据的情况下,指示该浏览器传输该目标文件中位于接收到的该文件片段之后的下一个文件片段。
在服务器判断出目标文件未传输完成的情况下,则可以指示浏览器传输该目标文件的下一个文件片段,以便重复以上步骤S103到S105的操作,直至目标文件传输完成。
S107,在判断出已接收到该目标文件的全部数据的情况下,将当前拼接出的拼接文件存储为该文件名称对应的完整版文件。
如,将最终拼接到的拼接文件存储为具有该目标文件的文件名称对应的文件,以使得目标文件被上传并存储到服务器中。
可以理解的是,在服务器通过在缓存区的缓存文件缓存各个文件片段拼接出的拼接文件的情况下,服务器可以将当前拼接得到的缓存文件存储为该目标文件的文件名称对应的完整版文件,并存储到指定存储区。相应的,为了避免占用缓存区,服务器还会删除缓存区缓存的该缓存文件。
可见,在本申请实施例中,服务器在接收到浏览器上传的文件传输请求之后,会指示浏览器对待上传的目标文件进行切分,以便浏览器将该目标文件切分后依次向服务器传输该目标文件切分后的各个文件片段。而服务器会分批接收目标文件的各个文件片段,并将接收到的各个文件片段进行拼接,这样,即使出现网络信号中断导致目标文件的文件片段未全部上传到服务器,由于服务器侧已经保存了该目标文件的部分文件片段,在网络信号恢复后,用户可以通过浏览器仅仅向服务器传输该目标文件中尚未被传输的文件片段,而无需重新上传整个目标文件,从而有利于避免由于信号中断等原因导致目标文件被全部重新传输的情况,进而有利于降低由于信号中断而导致目标文件传输复杂度,并有利于减少传输目标文件所需的耗时。
可以理解的是,在图1实施例的基础上,如果用户的终端与服务器之间出现网络信号中断导致目标文件未被全部传输到服务器,则在用户的终端能够重新连接网络的情况下,该用户仍可以通过任意一个浏览器继续向该服务器请求传输该目标文件。在该种情况下,服务器可以确定目标文件已接收到的文件片段,并指示浏览器继续传输该目标文件剩余的文件片段。
如,参见图2,其示出了本申请一种文件传输方法又一个实施例的流程示意图,本实施例的方法应用于服务器,本实施例可以包括:
S201,获取浏览器发送的文件上传请求。
其中,文件上传请求携带有待上传的目标文件的文件名称以及文件大小。
该步骤S201可以参见前面实施例的相关介绍。
S202,检测是否存储有该目标文件对应的拼接文件,如果否,则执行步骤S203;如果是,则执行步骤S204。
可以理解的是,如果当前时刻之前服务器接收过上传该目标文件的文件请求,服务器已经存储了该目标文件对应的至少一个文件片段,则服务器中会存储有该目标文件的拼接文件,而该拼接文件中存储有目标文件的至少一个文件片段。相应的,如果当前时刻之前用户未通过任何浏览器向该服务器请求上传过该目标文件,则服务器中未存储有该目标文件对应的拼接文件。
可选的,在服务器可以在缓存区构建缓存文件来存储目标文件的各个文件片段,在该种情况下,服务器可以判断是否存储有该目标文件的文件名称对应的缓存文件。如果存储有该缓存文件,则说明服务器在当前时刻之前接收过上传该目标文件的文件片段,而由于信号中断等原因该目标文件未被全部上传到服务器中。相应的,如果服务器中未存储有该缓存文件,则说明服务器中未接收过该目标文件的文件片段。
S203,在未存储有该目标文件对应的拼接文件的前提下,向浏览器返回针对该目标文件的第一文件切分方式。
其中,第一文件切分方式用于指示以该目标文件的文件起始位置为文件切分的起始点。
在未向服务器传输过该目标文件的文件片段的前提下,服务器可以指示浏览器将整个目标文件切分,从而需要从该目标文件的文件起始位置开始对文件切分,以便将整个目标文件切分出的文件片段依次上传给服务器。
可以理解的是,与前面文件切分方式相似,该第一文件切分方式同样还可以指示目标文件的文件切分大小,以使得目标文件按照该文件切分大小,从该文件切分的起始点开始将目标文件切分为多个文件片段。
可选的,在服务器向浏览器返回该第一文件切分方式的同时,服务器还可以向浏览器返回文件传输指示,该文件传输指示用于指示所述浏览器按照切分出的至少一个文件片段的顺序,依次传输文件片段。相应的,浏览器会在将整个目标文件切分之后,按顺序依次向服务器传输切分出的各个文件片段。
可以理解的是,为了提高后续文件片段存储以及拼接的效率,服务器在确定未存储目标文件的文件名称对应的缓存文件的情况下,还会创建与该目标文件的文件名称对应的缓存文件,该缓存文件存储于服务器的缓存区。
S204,在存储有该目标文件对应的拼接文件的前提下,依据存储的目标文件的拼接文件的文件大小,确定该目标文件的传输中断位置,并向该浏览器返回针对该目标文件的第二文件切分方式。
其中,目标文件的传输中断位置为该目标文件中尚未传输至该服务器的数据部分的起始位置。该传输中断位置也就是目标文件中待向服务器传输的数据的起始位置。如,假设目标文件的大小为10M,且服务器指示目标文件需要切分为大小为1M的文件片段,同时,假设当前时刻该服务器已经接收到该目标文件的前5个文件片段,则服务器存储了该目标文件的前5M数据,目标文件中上位传输的数据部分为该目标文件的后面5M数据,则该后面5M数据的数据起始位置就是该传输中断位置。
其中,第二文件切分方式用于指示以该目标文件的传输中断位置为文件切分的起始点,对该目标文件中处于所述传输中断位置之后的文件部分进行文件切分。如,假设传输中断位置为目标文件中的第129比特位,则从该第129比特位开始对目标文件进行切分。
与前面类似,该第二文件切分方式同样指示了目标文件的文件切分大小。
可以理解的是,在该步骤S204的情况中,由于目标文件已经传输了一部分数据到服务器,因此,按照该第二文件切分方式有可能只能切分出一个文件片段。
例如,假设目标文件为10M,而每个文件片段为1M为例,如果目标文件尚未被传输,则目标文件会被切分为10个文件片段;相应的,通过浏览器可以依次向服务器传输这10个文件片段。假设目标文件的9个文件片段传输到服务器之后,服务器与浏览器之间的网络通信中断,则目标文件剩余了一个文件片段尚未上传到服务器。在该种情况下,如果服务器再次接收到浏览器发送的该目标文件的上传请求,则服务器还可以为该浏览器返回第二文件切分方式,该第二文件切分方式可以指示从该目标文件从第9M数据开始向后切分,且文件片段的大小为1M,则该目标文件可以切分出最后1M构成的1个文件片段,从而得到切分出的一个文件片段。相应的,后续浏览器会向服务器传输该文件片段。
可选的,在服务器向浏览器返回该第二文件切分方式的同时,服务器还可以向浏览器返回文件传输指示,该文件传输指示用于指示所述浏览器按照切分出的至少一个文件片段的顺序,依次传输文件片段。相应的,浏览器会在将整个目标文件切分之后,按顺序依次向服务器传输切分出的各个文件片段。
S205,接收该浏览器发送的该目标文件的文件片段。
其中,该文件片段属于该浏览器按照该文件切分方式对目标文件切分所得到的至少一个文件片段。该文件片段为该目标文件的一部分。
如,在服务器首次接收到针对该目标文件的文件上传请求的情况下,该服务器会指示浏览器从目标文件的文件起始位置开始,将该目标文件切分为多个文件片段;则浏览器会按照切分出的多个文件片段的先后顺序,确定出当前需要传输的文件片段,并向服务器发送当前需要传输的文件片段。
又如,在传输目标文件存在中断的情况下,如果服务器再次接收到针对该目标文件的文件上传请求,服务器会指示服务器从目标文件的传输中断位置开始切分该目标文件。相应的,浏览器会按照从该目标文件的传输中断位置开始切分出的至少一个文件片段的先后顺序,确定当前待传输的文件片段,并发送给服务器。可以理解的是,浏览器从该目标文件的传输中断位置为文件切分的起始点对目标文件进行切分之后,切分出的至少一个文件片段中,位置顺序处于首尾的文件片段就是最近一次传输中断之后所需传输的文件片段,从而可以实现从上次中断位置处继续传输该目标文件的数据。
该步骤S205与前面实施例相似,在此不再赘述。
S206,将当前接收到的该文件片段与当前时刻之前接收到的该目标文件的文件片段拼接,得到该目标文件对应的拼接文件。
该步骤206可以参见前面相应内容的介绍,在此不再赘述。
可选的,在服务器创建有与该目标文件的文件名称对应的缓存文件的情况下,该步骤S206可以为将当前接收到的文件片段与缓存文件中缓存的该目标文件的文件片段拼接,得到拼接后的缓存文件。
S207,依据该目标文件的文件大小以及当前拼接出的拼接文件的文件大小,判断是否接收到该目标文件的全部数据,如果否,则执行步骤S208;如果是,则执行步骤S209。
S208,在未接收到该目标文件的全部数据的情况下,指示该浏览器传输该目标文件中位于接收到的该文件片段之后的下一个文件片段,并返回步骤S205。
S209,在判断出已接收到该目标文件的全部数据的情况下,将当前拼接出的拼接文件存储为该文件名称对应的完整版文件。
如,将拼接出的拼接文件作为该文件名称对应的文件存储到磁盘中。
可以理解的是,在通过缓存文件存储拼接后的文件片段的情况下,可以将将当前拼接后的缓存文件作为该文件名称的完整版文件存储到指定存储区;同时,可以删除缓存区缓存的该缓存文件。
可以理解的是,在本申请实施例中,服务器在接收到浏览器发送的文件上传请求之后,会先判断服务器中在当前时刻之前是否已经存储过该文件上传请求所请求上传的目标文件的数据,如果服务器未存储过该目标文件的数据,则服务器会指示浏览器从目标文件的初始位置对该目标文件切分,以便依次接收浏览器对该目标文件切分出的各个文件片段;如果服务器已存储有该目标文件的部分数据,则说明当前时刻之前可能由于网络中断等原因而导致该目标文件传输中断,在该种情况下,服务器会指示浏览器从该目标文件的传输中断位置开始对该目标文件进行切分,以便浏览器从该目标文件的传输中断位置开始继续传输目标文件尚未上传服务器的各个文件片段,从而避免文件传输中断之后再重新传输整个目标文件的情况,有利于减少文件传输的复杂度,降低文件传输的耗时。
同时,由于服务器每次接收到文件上传请求之后,都会检测服务器中是否存储有该文件上传请求所请求上传的文件的部分数据,而不会基于浏览器来判断是否接收过该浏览器传输的该文件,因此,如果用户利用某个浏览器向服务器上传文件的过程中出现文件上传中断的情况,用户可以采用上次传输该文件所采用的浏览器,也可以更换其他浏览器来继续上传文件,均不会影响到文件的继续上传,从而进一步提高了文件上传的便捷性。
为了便于理解本申请实施例的好处,下面结合一种应用场景对本申请实施例的方案进行说明。
假设用户在施工场所上传施工相关的施工数据文件,但是该施工场所的网络信号并不太好,经常会出现文件传输中断,则可以采用本申请实施例的方案进行上传,以提高文件传输的成功率,并降低文件传输的耗时。
如,假设施工数据文件为文件名称为施工M的文件,并假设该文件的文件大小为10M。并假设服务器中预置的文件切分规则为每个文件片段为1M。
如果用户通过终端的浏览器选择了该名称为施工M的文件并触发上传指令之后,浏览器会获得该施工M的文件的文件名称和文件大小,则浏览器会向服务器传输文件上传请求,该文件上传请求携带有文件名称:施工M;文件大小10M的信息。在该种情况下,由于服务器中尚未接收过该施工M的文件的数据,则服务器可以创建一个施工M的缓存文件,且服务器会指示浏览器从文件开始对该施工M的文件进行切分,且切分出的每个文件片段最大为1M。
相应的,浏览器可以基于如HTML5的文件切片技术,将该目标文件切分为10个大小均为1M的切片,每个切片就是一个文件片段。在该种情况下,浏览器会先向服务器传输第一个文件片段。而服务器将接收到该第一文件片段存储到缓存文件中,并指示浏览器传输第二个文件片段。然后,浏览器会向服务器传输该第二个文件片段;而该服务器接收到第二个文件片段会指示浏览器传输第三个文件片段,同时,服务器会将缓存文件中的该第一个文件片段和当前接收到的该第二个文件片段进行拼接,得到缓存文件中存储的拼接文件。依次类推,服务器每次接收到一个文件片段都会与缓存文件已存储的拼接文件进行拼接,同时,会指示了浏览器传输下一个文件片段,指示浏览器将10个文件片段都传输给服务器。
假设浏览器在传输给服务器5个文件片段之后,由于网络传输中断,浏览器与服务器之间的连接中断,从而导致该施工M的文件传输中断。这样,用户可以在浏览器所在的终端重新连接网络之后,利用该浏览器或者其他浏览器再次向服务器发送给施工M的文件对应的文件上传请求。或者,用户也可以更换具有该施工M的文件的另一个终端,在该终端上的浏览器上向服务器发送针对该施工M的文件的文件上传请求。
在用户利用任意终端的任意一个浏览器再次向该服务器发送针对该施工M的文件的文件上传请求之后,服务器检测到已经存储有该施工M的缓存文件,则服务器会指示浏览器对施工M的文件的后面5M的数据进行切分。相应的,浏览器会将终端中该施工M的文件的后面5M数据切分为5个大小均为1M的文件片段。然后,该浏览器会向服务器发送这5个文件片段中第一个文件片段(也就是目标文件中第6M对应的文件片段)。而服务器接收到该文件片段后,会将该文件片段与施工M对应的缓存文件中拼接出的该施工M的前5M数据对应的拼接文件进行拼接,从而得到该施工M的文件的前6M数据。同时,服务器会指示浏览器继续传输第7M数据对应的文件片段,直至目标文件的所有文件片段都传输给该服务器。
由此可见,通过本申请实施例的方案,在向服务器传输了该文件的前5M数据之后,浏览器可以继续传输该文件的后面5M数据,从而无需全部重传该目标文件的全部数据,从而节省了重新传输该文件的前5M数据所需的耗时。
可以理解的是,在本申请实施例中,为了实现向服务器传输,用户可以通过任意浏览器登录该服务器,在实际应用中,该服务器可以属于文件存储系统,该文件存储系统可以包括文件服务器以及前端服务器。其中,前面实施例中提到的服务器均可以认为是文件服务器。
其中,用户可以通过浏览器先登录前端服务器,则前端服务器会为浏览器返回一个文件上传界面以及上传文件所需链接到的该文件服务器的服务器地址。相应的,浏览器展现出该文件上传界面之后,用户可以通过在该文件上传界面选择终端中所需上传的目标文件,并触发浏览器发送文件上传请求。
相应的,浏览器依据文件服务器的服务器地址,向文件服务器发送携带该目标文件的文件名称以及文件大小的文件上传请求。
其中,该文件上传界面可以是一个表单。在用户提交了文件上传请求之后,浏览器可以将用户选择的该文件的文件名称和文件大小以及表单信息编码后上传给文件服务器。
可以理解的是,通常情况下,文件服务器和前端服务器是两台独立的服务器,但是如果文件服务器和前端服务器为同一台服务器的情况也同样适用于本申请实施例。
对应本申请的一种文件传输方法,本申请还提供了一种文件传输装置。
如,参见图3,其示出了本申请一种文件传输装置的一种组成结构示意图,本实施例的装置应用于服务器,包括:
请求获取单元301,用于获取浏览器发送的文件上传请求,所述文件上传请求携带有待上传的目标文件的文件名称以及文件大小;
切分指示单元302,用于向所述浏览器返回针对所述目标文件的文件切分方式;
片段接收单元303,用于接收所述浏览器发送的所述目标文件的文件片段,所述文件片段属于所述浏览器按照所述文件切分方式对所述目标文件切分所得到的至少一个文件片段;
片段拼接单元304,用于将当前接收到的所述文件片段与当前时刻之前接收到的所述目标文件的文件片段拼接,得到所述目标文件对应的拼接文件;
传输判断单元305,用于依据所述目标文件的文件大小以及当前拼接出的拼接文件的文件大小,判断是否接收到所述目标文件的全部数据;
进度指示单元306,用于在未接收到所述目标文件的全部数据的情况下,指示所述浏览器传输所述目标文件中位于接收到的所述文件片段之后的下一个文件片段;
文件存储单元307,用于在判断出已接收到所述目标文件的全部数据的情况下,将当前拼接出的拼接文件存储为所述文件名称对应的完整版文件。
可选的,所述切分指示单元,包括:
数据检测单元,用于检测是否存储有所述目标文件对应的拼接文件;
第一切分指示单元,用于在未存储有所述目标文件对应的拼接文件的前提下,向所述浏览器返回针对所述目标文件的第一文件切分方式,所述第一文件切分方式用于指示以所述目标文件的文件起始位置为文件切分的起始点;
第二切分指示单元,用于在存储有所述目标文件对应的拼接文件的前提下,依据存储的所述目标文件的拼接文件的文件大小,确定所述目标文件的传输中断位置,并向所述浏览器返回针对所述目标文件的第二文件切分方式,所述第二文件切分方式用于指示以所述目标文件的传输中断位置为文件切分的起始点,对所述目标文件中处于所述传输中断位置之后的文件部分进行文件切分;所述传输中断位置为所述目标文件中尚未传输至所述服务器的数据部分的起始位置。
在一种可能的实现方式中,所述数据检测单元,具体为,用于检测是否存储有所述目标文件的文件名称对应的缓存文件;
所述装置还包括:文件创建单元,用于在未存储有所述目标文件对应的拼接文件的前提下,创建所述目标文件的文件名称对应的缓存文件;
所述片段拼接单元,具体为,用于将当前接收到的所述文件片段与所述缓存文件中缓存的所述目标文件的文件片段拼接,得到拼接后的缓存文件。
可选的,所述文件存储单元,包括:
文件存储子单元,用于在判断出已接收到所述目标文件的全部数据的情况下,将当前拼接出的缓存文件作为该文件名称的完整版文件存储到指定存储区;
缓存删除单元,用于删除缓存区缓存的所述缓存文件。
可选的,该装置还可以包括:
传输指示单元,用于在第一切分指示单元以及第二切分指示单元向所述浏览器返回针对所述目标文件的第一文件切分方式或者向所述浏览器返回针对所述目标文件的第二文件切分方式的同时,向所述浏览器返回文件传输指示,所述文件传输指示用于指示所述浏览器按照切分出的至少一个文件片段的顺序,依次传输文件片段。
可选的,本申请实施例中的文件切分方式包括:文件切分的起始点以及文件切分大小。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种文件传输方法,其特征在于,应用于服务器,包括:
获取浏览器发送的文件上传请求,所述文件上传请求携带有待上传的目标文件的文件名称以及文件大小;
向所述浏览器返回针对所述目标文件的文件切分方式;
接收所述浏览器发送的所述目标文件的文件片段,所述文件片段属于所述浏览器按照所述文件切分方式对所述目标文件切分所得到的至少一个文件片段,所述文件片段携带有所述文件片段在所述目标文件的位置顺序标识;
依据当前接收到的所述文件片段在所述目标文件的位置顺序标识,检测当前接收到的所述文件片段是否存在传输异常,在确认当前接收到的所述文件片段不存在传输异常的情况下,将当前接收到的所述文件片段与当前时刻之前接收到的所述目标文件的文件片段拼接,得到所述目标文件对应的拼接文件;
依据所述目标文件的文件大小以及当前拼接出的拼接文件的文件大小,判断是否接收到所述目标文件的全部数据;
在未接收到所述目标文件的全部数据的情况下,指示所述浏览器传输所述目标文件中位于接收到的所述文件片段之后的下一个文件片段;
在判断出已接收到所述目标文件的全部数据的情况下,将当前拼接出的拼接文件存储为所述文件名称对应的完整版文件。
2.根据权利要求1所述的文件传输方法,其特征在于,所述向所述浏览器返回针对所述目标文件的文件切分方式,包括:
检测是否存储有所述目标文件对应的拼接文件;
在未存储有所述目标文件对应的拼接文件的前提下,向所述浏览器返回针对所述目标文件的第一文件切分方式,所述第一文件切分方式用于指示以所述目标文件的文件起始位置为文件切分的起始点;
在存储有所述目标文件对应的拼接文件的前提下,依据存储的所述目标文件的拼接文件的文件大小,确定所述目标文件的传输中断位置,并向所述浏览器返回针对所述目标文件的第二文件切分方式,所述第二文件切分方式用于指示以所述目标文件的传输中断位置为文件切分的起始点,对所述目标文件中处于所述传输中断位置之后的文件部分进行文件切分;所述传输中断位置为所述目标文件中尚未传输至所述服务器的数据部分的起始位置。
3.根据权利要求2所述的文件传输方法,其特征在于,所述检测是否存储有所述目标文件对应的拼接文件,包括:
检测是否存储有所述目标文件的文件名称对应的缓存文件;
在未存储有所述目标文件对应的拼接文件的前提下,还包括:
创建所述目标文件的文件名称对应的缓存文件;
所述将当前接收到的所述文件片段与当前时刻之前接收到的所述目标文件的文件片段拼接,得到所述目标文件对应的拼接文件,包括:
将当前接收到的所述文件片段与所述缓存文件中缓存的所述目标文件的文件片段拼接,得到拼接后的缓存文件。
4.根据权利要求3所述的文件传输方法,其特征在于,所述将当前拼接出的拼接文件存储为所述文件名称对应的完整版文件,包括:
将当前拼接出的缓存文件作为该文件名称的完整版文件存储到指定存储区;
删除缓存区缓存的所述缓存文件。
5.根据权利要求2所述的文件传输方法,其特征在于,在所述向所述浏览器返回针对所述目标文件的第一文件切分方式以及向所述浏览器返回针对所述目标文件的第二文件切分方式的同时,还包括:
向所述浏览器返回文件传输指示,所述文件传输指示用于指示所述浏览器按照切分出的至少一个文件片段的顺序,依次传输文件片段。
6.根据权利要求1所述的文件传输方法,其特征在于,所述文件切分方式包括:文件切分的起始点以及文件切分大小。
7.一种文件传输装置,其特征在于,应用于服务器,包括:
请求获取单元,用于获取浏览器发送的文件上传请求,所述文件上传请求携带有待上传的目标文件的文件名称以及文件大小;
切分指示单元,用于向所述浏览器返回针对所述目标文件的文件切分方式;
片段接收单元,用于接收所述浏览器发送的所述目标文件的文件片段,所述文件片段属于所述浏览器按照所述文件切分方式对所述目标文件切分所得到的至少一个文件片段,所述文件片段携带有所述文件片段在所述目标文件的位置顺序标识;
片段拼接单元,用于依据当前接收到的所述文件片段在所述目标文件的位置顺序标识,检测当前接收到的所述文件片段是否存在传输异常,在确认当前接收到的所述文件片段不存在传输异常的情况下,将当前接收到的所述文件片段与当前时刻之前接收到的所述目标文件的文件片段拼接,得到所述目标文件对应的拼接文件;
传输判断单元,用于依据所述目标文件的文件大小以及当前拼接出的拼接文件的文件大小,判断是否接收到所述目标文件的全部数据;
进度指示单元,用于在未接收到所述目标文件的全部数据的情况下,指示所述浏览器传输所述目标文件中位于接收到的所述文件片段之后的下一个文件片段;
文件存储单元,用于在判断出已接收到所述目标文件的全部数据的情况下,将当前拼接出的拼接文件存储为所述文件名称对应的完整版文件。
8.根据权利要求7所述的文件传输装置,其特征在于,所述切分指示单元,包括:
数据检测单元,用于检测是否存储有所述目标文件对应的拼接文件;
第一切分指示单元,用于在未存储有所述目标文件对应的拼接文件的前提下,向所述浏览器返回针对所述目标文件的第一文件切分方式,所述第一文件切分方式用于指示以所述目标文件的文件起始位置为文件切分的起始点;
第二切分指示单元,用于在存储有所述目标文件对应的拼接文件的前提下,依据存储的所述目标文件的拼接文件的文件大小,确定所述目标文件的传输中断位置,并向所述浏览器返回针对所述目标文件的第二文件切分方式,所述第二文件切分方式用于指示以所述目标文件的传输中断位置为文件切分的起始点,对所述目标文件中处于所述传输中断位置之后的文件部分进行文件切分;所述传输中断位置为所述目标文件中尚未传输至所述服务器的数据部分的起始位置。
9.根据权利要求8所述的文件传输装置,其特征在于,所述数据检测单元,具体为,用于检测是否存储有所述目标文件的文件名称对应的缓存文件;
所述装置还包括:文件创建单元,用于在未存储有所述目标文件对应的拼接文件的前提下,创建所述目标文件的文件名称对应的缓存文件;
所述片段拼接单元,具体为,用于将当前接收到的所述文件片段与所述缓存文件中缓存的所述目标文件的文件片段拼接,得到拼接后的缓存文件。
10.根据权利要求9所述的文件传输装置,其特征在于,所述文件存储单元,包括:
文件存储子单元,用于在判断出已接收到所述目标文件的全部数据的情况下,将当前拼接出的缓存文件作为该文件名称的完整版文件存储到指定存储区;
缓存删除单元,用于删除缓存区缓存的所述缓存文件。
CN201910477022.XA 2019-06-03 2019-06-03 文件传输方法和装置 Active CN112039932B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910477022.XA CN112039932B (zh) 2019-06-03 2019-06-03 文件传输方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910477022.XA CN112039932B (zh) 2019-06-03 2019-06-03 文件传输方法和装置

Publications (2)

Publication Number Publication Date
CN112039932A CN112039932A (zh) 2020-12-04
CN112039932B true CN112039932B (zh) 2023-10-20

Family

ID=73576608

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910477022.XA Active CN112039932B (zh) 2019-06-03 2019-06-03 文件传输方法和装置

Country Status (1)

Country Link
CN (1) CN112039932B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118283026A (zh) * 2022-12-30 2024-07-02 华为技术有限公司 传输文件的方法及电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102810138A (zh) * 2012-06-19 2012-12-05 北京奇虎科技有限公司 一种用户端文件的修复方法和系统
CN103124275A (zh) * 2011-11-18 2013-05-29 腾讯科技(深圳)有限公司 一种获取文件的方法和装置
CN105472035A (zh) * 2016-01-04 2016-04-06 百度在线网络技术(北京)有限公司 一种文件传输方法及装置
CN106060160A (zh) * 2016-07-07 2016-10-26 腾讯科技(深圳)有限公司 一种文件上传方法及装置
CN106453668A (zh) * 2016-12-26 2017-02-22 网宿科技股份有限公司 一种文件反向上传方法和系统
CN107872489A (zh) * 2016-09-28 2018-04-03 杭州海康威视数字技术股份有限公司 一种文件切片上传方法、装置及云存储系统
CN109361754A (zh) * 2018-11-05 2019-02-19 中国广核电力股份有限公司 一种基于浏览器的文件传输方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103124275A (zh) * 2011-11-18 2013-05-29 腾讯科技(深圳)有限公司 一种获取文件的方法和装置
CN102810138A (zh) * 2012-06-19 2012-12-05 北京奇虎科技有限公司 一种用户端文件的修复方法和系统
CN105472035A (zh) * 2016-01-04 2016-04-06 百度在线网络技术(北京)有限公司 一种文件传输方法及装置
CN106060160A (zh) * 2016-07-07 2016-10-26 腾讯科技(深圳)有限公司 一种文件上传方法及装置
CN107872489A (zh) * 2016-09-28 2018-04-03 杭州海康威视数字技术股份有限公司 一种文件切片上传方法、装置及云存储系统
CN106453668A (zh) * 2016-12-26 2017-02-22 网宿科技股份有限公司 一种文件反向上传方法和系统
CN109361754A (zh) * 2018-11-05 2019-02-19 中国广核电力股份有限公司 一种基于浏览器的文件传输方法及装置

Also Published As

Publication number Publication date
CN112039932A (zh) 2020-12-04

Similar Documents

Publication Publication Date Title
US8359358B2 (en) File folder transmission on network
CN103124275B (zh) 一种获取文件的方法和装置
CN107040563B (zh) 异步服务处理方法及服务器
CN101179393A (zh) 一种实现文件断点续传的方法及系统
CN105227610A (zh) 一种文件上传、保存方法及装置
CN105338090A (zh) 一种基于WebSocket的断点续传方法及装置
CN109905479B (zh) 文件传输方法和装置
CN103731499B (zh) 终端和文件传输方法
CN105635116A (zh) 断线重连方法、装置及系统
CN103383698B (zh) 数据删除的方法及其移动终端
US20120296946A1 (en) File management apparatus and file management apparatus controlling method
CN112039932B (zh) 文件传输方法和装置
CN102708192A (zh) 一种文档共享的方法及系统、设备
CN102355342A (zh) 一种消息发送和接收的方法及装置
CN110912805A (zh) 消息读取状态的同步方法、终端、服务端及系统
CN108965463B (zh) 一种文件传输方法、装置和系统
CN114598697B (zh) 一种传输文件的方法、装置及计算机可读存储介质
CN115914207A (zh) 基于网页的文件传输方法、装置及可读存储介质
CN104065613A (zh) 一种应用的离线操作数据的同步方法、系统及装置
CN116112484A (zh) 文件分片上传方法、装置、车辆及存储介质
JP5913196B2 (ja) 計算機システム及び障害特定方法
CN114500503B (zh) 一种智能设备离线日志上传方法、智能设备和可读介质
CN115297447A (zh) 一种长短信合并方法、系统、设备及存储介质
CN115150348B (zh) 邮件附件还原方法及系统
CN112688905B (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