一种文件断点续传的方法与流程
未命名
10-08
阅读:79
评论:0

1.本发明涉及互联网技术领域,特别是涉及一种文件断点续传的方法。
背景技术:
2.随着网络的普及,传输文件的需求变得越来越常见且重要。现有网页端文件上传的方法,往往是先判断当前文件是否完整上传,如果当前文件未完整上传,则需要进行重新上传,直到最终将当前文件全部成功上传至后台服务器。
3.在现有的网页端文件的上传过程中,因为缺少断点续传机制,一旦网络中断,往往无法准确地定位出当前文件未上传部分的位置,需要重新上传文件,会出现重复上传同一当前文件的问题,此外,重新上传文件会花费较多时间,降低文件上传的效率。
技术实现要素:
4.本发明提供一种文件断点续传的方法,以解决现有技术无法准确地定位出当前文件未上传部分的位置,需要重新上传文件的问题。
5.为了解决上述问题,本发明提供了一种文件断点续传的方法,包括:
6.根据预设访问路径访问数据库,判断所述数据库中是否存在待上传的第一文件,若不存在,确定所述第一文件为未上传过的文件,若存在,确定所述第一文件为已上传过的文件;
7.当确定所述第一文件为未上传过的文件时,将所述第一文件拆分为若干个第一分块;从服务器后端获取所述第一文件的第一上传id,根据所述第一上传id,向服务器后端上传所述若干个第一分块,并根据所述第一上传id和所述若干个第一分块的第一上传情况,更新存储在数据库中的第一列表;
8.当确定所述第一文件为已上传过的文件时,从所述数据库中存储的第二列表获取所述第一文件对应的第二上传id和所述第一文件对应的第二上传情况;其中,文件的上传情况包括:已完成上传或者未完成上传;
9.当所述第二上传情况为未完成上传时,将所述第一文件拆分为若干个第二分块;确定所述若干个第二分块中未上传的一个或多个第三分块,根据所述第二上传id,向服务器后端上传若干个第三分块,并根据所述第二上传id和所述若干个第三分块的第二上传情况,更新所述第二列表。
10.本发明通过判断数据库中是否存在第一文件,确定第一文件的类型;第一文件为未上传过的文件时,获取其上传id,向服务器后端上传若干个第一分块;第一文件为已上传过的文件时,获取其上传id,确定未上传分块,进一步确定第一文件的类型,第一文件为未完成上传时,上传若干个第三分块。通过两次对第一文件的类型判断,能准确确定第一文件的类型,进而上传第一文件的未上传部分;并且对于不同类型的第一文件,对未上传部分也做了区分,利用上传id,采用不同的方法确定未上传部分,能准确地定位出当前文件未上传部分的位置,避免重复上传第一文件;并且在上传未上传分块的同时,更新对应列表,能够
及时记录分块的上传信息,如果传输突然发生中断,能够根据对应列表快速、准确地定位出当前文件未上传部分的位置。相比于现有技术能够准确地定位出当前文件未上传部分的位置,不会出现重复上传同一当前文件的问题,提高文件上传的效率。
11.作为优选方案,在确定所述第二上传情况为未完成上传之后,还包括:
12.将数据库中存储的第二文件拆分为若干个第四分块;其中,所述第二文件是由上一次上传所述第一文件时存储到数据库中的所述第一文件而获得;
13.确定所述若干个第四分块中未上传的一个或多个第五分块,根据所述第二上传id,向服务器后端上传若干个第五分块,并根据所述第二上传id和所述若干个第五分块的第二上传情况,更新所述第二列表。
14.本优选方案可以在传输突然发生中断时,通过将数据库中储存的第二文件拆分后进行上传,提高了文件续传的效率。
15.作为优选方案,在根据预设访问路径访问数据库之前,还包括:
16.在网页的输入标签获取待上传的所述第一文件,通过所述输入标签返回js的filelist文件对象数组,遍历所述filelist文件对象数组,得到所述第一文件的基本信息,其中所述基本信息包括:文件应用名称、时间戳和文件类型;
17.通过网页中sparkmd5的插件获取所述第一文件的md5,根据所述第一文件的md5和所述基本信息,生成所述第一文件的预设访问路径。
18.本优选方案通过输入标签获取待上传的第一文件及其基本信息,能保证获取第一文件对应的基本信息的高效性;通过sparkmd5的插件能快速获取第一文件的md5,通过第一文件的已有信息建立预设访问路径,能缩短后续访问数据库的时间,提高访问效率。
19.作为优选方案,当确定所述第一文件为已上传过的文件时,从所述数据库中存储的第二列表获取所述第一文件对应的第二上传id和所述第一文件的第二上传情况,具体为:
20.当确定所述第一文件为已上传过的文件时,从所述数据库中存储的第二列表获取所述第一文件对应的第二上传id;
21.根据所述第二列表确定所述第一文件的第二上传情况,或者将所述第二上传id加入索引,在所述服务器后端进行查询,确定所述第一文件的第二上传情况。
22.本优选方案可以通过不同的方式确定第一文件的第二上传情况,提高了实际应用的灵活性。
23.作为优选方案,确定所述若干个第二分块中未上传的一个或多个第三分块,根据所述第二上传id,向服务器后端上传若干个第三分块,具体为:
24.根据所述第二列表确定所述若干个第二分块中未上传的一个或多个第三分块,或者将所述第二上传id加入索引,在所述服务器后端进行查询,确定所述第一文件的已上传分块,由所述已上传分块确定所述若干个第二分块中未上传的一个或多个第三分块;使用所述第二上传id向所述服务器后端发送上传请求,所述服务器后端收到所述上传请求后,向所述服务器后端上传若干个第三分块。
25.本优选方案可以通过不同的方式确定若干个第二分块中未上传的一个或多个第三分块,提高了实际应用的灵活性。
26.作为优选方案,在所述更新存储在数据库中的第二列表之后,还包括:
27.所述若干个第一分块、第三分块或第五分块全部上传成功后,向所述服务器后端发起合并请求,所述服务器后端收到所述合并请求后,所述服务器后端使用所述第一上传id或者第二上传id将已上传分块进行关联,合并所述第一上传id或者第二上传id关联出来的全部分块。
28.本优选方案通过上传id将已上传分块进行关联,能准确识别出已经上传的所有第一文件的分块,避免服务器后端中第一文件的分块在合并时出错。
29.作为优选方案,当确定所述第一文件为未上传过的文件时,从服务器后端获取所述第一文件的第一上传id,具体为:
30.当确定所述第一文件为未上传过的文件时,向服务器后端发送所述第一文件的上传接口,获取所述第一文件的所述第一上传id。
31.作为优选方案,根据所述第一上传id,向服务器后端上传所述若干个第一分块,具体为:
32.使用所述第一上传id向所述服务器后端发送上传请求,所述服务器后端收到所述上传请求后,向所述服务器后端上传所述若干个第一分块。
33.作为优选方案,从服务器后端获取所述第一文件的第一上传id,根据所述第一上传id,向服务器后端上传所述若干个第一分块,还包括:
34.使用所述数据库储存所述第一文件、第一文件的信息、第一上传id和第一列表,其中,所述第一文件的信息,包括:基本信息、预设访问路径和md5。
35.本优选方案通过数据库存储第一文件及其相关信息,以便在传输突然发生中断时,能够根据对应信息快速、准确地定位出当前文件未上传部分的位置,并且在下次进行续传时,能够直接使用数据库中存储的第一文件进行上传操作,提高了文件续传的效率。
36.作为优选方案,更新存储在数据库中的第二列表,还包括:
37.合并成功后,所述服务器后端返回合并成功指令,所述数据库收到所述合并成功指令后,当所述第一文件为未上传过的文件时,删除所述数据库中储存的所述第一文件、第一文件的所有信息和第一列表;当所述第一文件为未完成上传时,删除所述数据库中储存的所述第二文件、第二文件的所有信息和第二列表。
38.本优选方案在合并成功后,删除数据库中储存的第一文件或者第二文件,以及与第一文件或者第二文件相关的信息和列表,能够防止这些文件、信息和列表占用存储空间,影响下一个任务的数据查询的速度。
附图说明
39.图1是本发明实施例提供的一种文件断点续传的方法的流程示意图;
40.图2是本发明实施例提供的一种文件断点续传的方法的逻辑示意图;
41.图3是本发明实施例提供的一种文件断点续传的装置的结构示意图。
具体实施方式
42.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本技术保护的范围。
43.在本技术的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本技术的描述中,除非另有说明,“多个”的含义是两个或两个以上。
44.请参阅图1,本发明的实施例提供了一种文件断点续传的方法,包括s1~s4:
45.本方法在s1之前,还包括:
46.s10、在网页的输入标签获取待上传的第一文件,通过输入标签返回js的filelist文件对象数组,遍历filelist文件对象数组,得到第一文件的基本信息,其中基本信息包括:文件应用名称、时间戳和文件类型;通过网页中sparkmd5的插件获取第一文件的md5,根据第一文件的md5和基本信息,生成第一文件的预设访问路径。
47.在本发明实施例中,可以在网页的input标签获取待上传的第一文件,通过input标签返回js的filelist文件对象数组。
48.本发明实施例遍历filelist文件对象数组,能够准确、快速地得到第一文件的基本信息,避免了人工输入信息可能会产生遗漏和效率低、从其他平台加载该文件的信息导致效率低的问题;通过input标签获取待上传的第一文件及其基本信息,能保证获取第一文件对应的基本信息的高效性;通过sparkmd5的插件能快速获取第一文件的md5,通过第一文件的已有信息建立预设访问路径,能缩短后续访问数据库的时间,提高访问效率。
49.s1、根据预设访问路径访问数据库,判断数据库中是否存在待上传的第一文件,若不存在,确定第一文件为未上传过的文件,若存在,确定第一文件为已上传过的文件;
50.在本发明实施例中,根据预设访问路径访问indexeddb,判断indexeddb中是否存在待上传的第一文件,若不存在,确定第一文件为未上传过的文件,若存在,确定第一文件为已上传过的文件。
51.需要说明的是,通过判断indexeddb中是否存在待上传的第一文件,来确定第一文件是未上传过的文件还是已上传过的文件,是因为indexeddb在上一次传输时会储存第一文件,所以可以通过判断indexeddb中是否存在第一文件,来确定第一文件的类型。
52.本发明实施例对待上传的第一文件进行类型判断,以便下一步根据不同的类型,采取不同的上传方法,使得文件续传过程更高效。
53.s2、当确定第一文件为未上传过的文件时,将第一文件拆分为若干个第一分块;从服务器后端获取第一文件的第一上传id,根据第一上传id,向服务器后端上传若干个第一分块,并根据第一上传id和若干个第一分块的第一上传情况,更新存储在数据库中的第一列表;
54.在本发明实施例中,当确定第一文件为未上传过的文件时,可以使用file对象自带的slice方法对第一文件进行分块处理,以5m为标准,对第一文件进行分块,得到若干个第一分块,若第一文件大小小于5m,则不进行分块处理,此时的唯一一个第一分块就是第一文件。
55.向服务器后端发送第一文件的上传接口,获取第一文件的第一上传id;
56.使用indexeddb储存第一文件、第一文件的信息、第一上传id和第一列表,其中,第一文件的信息,包括:基本信息、预设访问路径和md5;
57.使用第一上传id向服务器后端发送上传请求,服务器后端收到上传请求后,向服务器后端上传若干个第一分块。
58.需要说明的是,第一列表是第一文件的分块上传列表,在若干个第一分块上传的同时,会更新第一列表中对应的内容。
59.本发明实施例将第一文件分块,是基于分块上传机制,能够保证传输暂停或者异常中断后,可以基于原来的进度重传;使用indexeddb储存第一文件及其信息,indexeddb是浏览器自带的一种浏览器端文档数据库,能够保证第一文件在通过浏览器中网页的input标签输入时,秒存到indexeddb中,在传输暂停或者异常中断后,可以使用储存在indexeddb中的第一文件继续上传,提高文件续传的效率。
60.s3、当确定第一文件为已上传过的文件时,从数据库中存储的第二列表获取第一文件对应的第二上传id和第一文件对应的第二上传情况;其中,文件的上传情况包括:已完成上传或者未完成上传;
61.在本发明实施例中,当确定第一文件为已上传过的文件时,从indexeddb中存储的第二列表获取第一文件对应的第二上传id;
62.根据第二列表确定第一文件的第二上传情况,或者将第二上传id加入索引,在服务器后端进行查询,确定第一文件的第二上传情况。
63.需要说明的是,第二列表和第二文件是指indexeddb在上一次传输第一文件时所储存的分块上传列表和第一文件,由于确定第一文件为已上传过的文件,所以分块上传列表和第一文件在上一次上传时,就已经被储存在了indexeddb中,所以可以直接从indexeddb中获取分块上传列表和第一文件,即可以直接从indexeddb中获取第二列表和第二文件。
64.本发明实施例可以通过不同的方式确定第一文件的第二文件上传情况,提高了实际应用的灵活性。
65.s4、当第二上传情况为未完成上传时,将第一文件拆分为若干个第二分块;确定若干个第二分块中未上传的一个或多个第三分块,根据第二上传id,向服务器后端上传若干个第三分块,并根据第二上传id和若干个第三分块的第二上传情况,更新第二列表。
66.在本发明实施例中,当确定第一文件为未上传过的文件时,可以使用file对象自带的slice方法对第一文件进行分块处理,以5m为标准,对第一文件进行分块,得到若干个第二分块,若第一文件大小小于5m,则不进行分块处理,此时的唯一一个第二分块就是第一文件;
67.根据第二列表确定若干个第二分块中未上传的一个或多个第三分块,或者将第二上传id加入索引,在服务器后端进行查询,确定第一文件的已上传分块,由已上传分块确定若干个第二分块中未上传的一个或多个第三分块;使用第二上传id向服务器后端发送上传请求,服务器后端收到上传请求后,向服务器后端上传若干个第三分块,并根据第二上传id和若干个第三分块的第二上传情况,更新第二列表。
68.当确定第二文件为已完成上传时,不执行文件上传操作。
69.基于与本实施例相同或相似的发明构思,当确定第一文件为未上传过的文件时,可以使用file对象自带的slice方法对indexeddb中存储的第二文件进行分块处理,以5m为标准,对第二文件进行分块,得到若干个第四分块,若第二文件大小小于5m,则不进行分块
处理,此时的唯一一个第四分块就是第二文件;根据第二列表确定若干个第四分块中未上传的一个或多个第五分块,或者将第二上传id加入索引,在服务器后端进行查询,确定第二文件的已上传分块,由已上传分块确定若干个第四分块中未上传的一个或多个第五分块;使用第二上传id向服务器后端发送上传请求,服务器后端收到上传请求后,向服务器后端上传若干个第五分块,并根据第二上传id和若干个第五分块的第二上传情况,更新第二列表。
70.本发明实施例将第一文件或者第二文件分块,是基于分块上传机制,能够保证传输暂停或者异常中断后,可以基于原来的进度重传;并且可以通过不同的方式确定若干个第二分块中未上传的一个或多个第三分块,或者可以通过不同的方式确定若干个第四分块中未上传的一个或多个第五分块,提高了实际应用的灵活性;在传输暂停或者异常中断时,可以使用储存在indexeddb中的第二文件继续上传,此时的第二文件就是上一次传输第一文件时,储存在indexeddb中的第一文件,所以直接使用第二文件进行分块后上传,可以提高文件续传的效率。
71.本方法在s4之后,还包括:
72.s5、若干个第一分块、第三分块或第五分块全部上传成功后,向服务器后端发起合并请求,服务器后端收到合并请求后,服务器后端使用第一上传id或者第二上传id将已上传分块进行关联,合并第一上传id或者第二上传id关联出来的全部分块。
73.在本发明实施例中,若干个第一分块、第三分块或第五分块全部上传成功后,向服务器后端发起合并请求,服务器后端收到合并请求后,当确定第一文件为未上传过的文件时,服务器后端使用第一上传id将已上传分块进行关联,合并第一上传id关联出来的全部分块;
74.当确定第一文件为未完成上传时,服务器后端使用第二上传id将已上传分块进行关联,合并第二上传id关联出来的全部分块。
75.本发明实施例通过上传id将已上传分块进行关联,能准确识别出已经上传的所有第一文件的分块,避免第一文件的分块在合并时出错。
76.s6、合并成功后,服务器后端返回合并成功指令,数据库收到合并成功指令后,当第一文件为未上传过的文件时,删除数据库中储存的第一文件、第一文件的所有信息和第一列表;当第一文件为未完成上传时,删除数据库中储存的第二文件、第二文件的所有信息和第二列表。
77.在本发明实施例中,合并成功后,服务器后端返回合并成功指令,indexeddb收到合并成功指令后,当第一文件为未上传过的文件时,删除indexeddb中储存的第一文件、第一文件的所有信息和第一列表;当第一文件为未完成上传时,删除indexeddb中储存的第二文件、第二文件的所有信息和第二列表。
78.本发明实施例在合并成功后,删除数据库中储存的相关第一文件或者第二文件,以及与第一文件或者第二文件相关的数据信息和列表,能够防止这些文件、数据信息和列表占用存储空间,响下一个任务的数据查询的速度。
79.请参阅图2,为应用本发明实施例,还提供了一种文件断点续传的方法的逻辑示意图,描述了按照本实施例,从开始上传第一文件到上传完毕,以及进行后续处理的主要过程,如下:
80.1、开始。
81.2、上传第一文件:在网页的input标签获取待上传的第一文件。
82.3、获取第一文件的信息:通过input标签返回js的filelist文件对象数组,遍历filelist文件对象数组,得到第一文件的基本信息,其中基本信息包括:文件应用名称、时间戳和文件类型;通过网页中sparkmd5的插件获取第一文件的md5。
83.4、生成预设访问地址:根据第一文件的md5和基本信息生成预设访问地址。
84.5、判断第一文件在数据库中是否存在:根据预设访问路径访问indexeddb(数据库),判断indexeddb中是否存在待上传的第一文件。
85.6、(否)向服务器后端发送第一文件的上传端口,获取第一上传id,使用数据库存储第一列表,第一文件及其信息,使用第一上传id,将第一文件的未上传分块上传到服务器后端;上传分块的同时,更新第一列表:
86.确定第一文件为未上传过的文件,可以使用file对象自带的slice方法对第一文件进行分块处理,以5m为标准,对第一文件进行分块,得到若干个第一分块,若第一文件大小小于5m,则不进行分块处理,此时的唯一一个第一分块就是第一文件。
87.向服务器后端发送第一文件的上传接口,获取第一文件的第一上传id;
88.使用indexeddb储存第一文件、第一文件的信息、第一上传id和第一列表,其中,第一文件的信息,包括:基本信息、预设访问路径和md5;
89.使用第一上传id向服务器后端发送上传请求,服务器后端收到上传请求后,向服务器后端上传若干个第一分块。
90.7、(是)在数据库中获取第二上传列表,确定数据库中第一文件的上传情况:
91.在indexeddb中获取第二上传列表,确定数据库中第一文件的上传情况:确定第一文件为已上传过的文件,从indexeddb中存储的第二列表获取第一文件对应的第二上传id;
92.根据第二列表确定第一文件的第二上传情况,或者将第二上传id加入索引,在服务器后端进行查询,确定第一文件的第二上传情况。
93.7.1、(第一文件为已完成上传时):不执行上传操作。
94.7.2、(第一文件为未完成上传时):采取方案a或者方案b将第一文件的未上传部分上传到服务器后端。
95.7.2.1、方案a、将第一文件的未上传分块,通过第二上传id,上传到服务器后端;上传分块的同时,更新第二列表:
96.可以使用file对象自带的slice方法对第一文件进行分块处理,以5m为标准,对第一文件进行分块,得到若干个第二分块,若第一文件大小小于5m,则不进行分块处理,此时的唯一一个第二分块就是第一文件;
97.根据第二列表确定若干个第二分块中未上传的一个或多个第三分块,或者将第二上传id加入索引,在服务器后端进行查询,确定第一文件的已上传分块,由已上传分块确定若干个第二分块中未上传的一个或多个第三分块;使用第二上传id向服务器后端发送上传请求,服务器后端收到上传请求后,向服务器后端上传若干个第三分块,并根据第二上传id和若干个第三分块的第二上传情况,更新第二列表。
98.7.2.2、方案b、使用数据库中的第一文件的未上传分块,通过第二上传id,上传到服务器后端;上传分块的同时,更新第二列表:
99.可以使用file对象自带的slice方法对indexeddb中存储的第二文件(第二文件就是上一次传输第一文件时,储存在indexeddb中的第一文件)进行分块处理,以5m为标准,对第二文件进行分块,得到若干个第四分块,若第二文件大小小于5m,则不进行分块处理,此时的唯一一个第四分块就是第二文件;根据第二列表确定若干个第四分块中未上传的一个或多个第五分块,或者将第二上传id加入索引,在服务器后端进行查询,确定第二文件的已上传分块,由已上传分块确定若干个第四分块中未上传的一个或多个第五分块;使用第二上传id向服务器后端发送上传请求,服务器后端收到上传请求后,向服务器后端上传若干个第五分块,并根据第二上传id和若干个第五分块的第二上传情况,更新第二列表。
100.需要说明的是,方案a和方案b是基于相同的原理,对来源不同的第一文件进行分块并上传的操作,在传输暂停或者异常中断时,可以采取方案b,此时是使用储存在indexeddb中的第二文件继续上传,这里的第二文件就是上一次传输第一文件时,储存在indexeddb中的第一文件,所以直接使用第二文件进行分块后上传,可以提高文件续传的效率。
101.8、完成上传,将服务器后端的第一文件分块合并:
102.若干个第一分块、第三分块或第五分块全部上传成功后,向服务器后端发起合并请求,服务器后端收到合并请求后,当确定第一文件为未上传过的文件时,服务器后端使用第一上传id将已上传分块进行关联,合并第一上传id关联出来的全部分块;
103.当确定第一文件为未完成上传时,服务器后端使用第二上传id将已上传分块进行关联,合并第二上传id关联出来的全部分块。
104.9、删除数据库中的第一文件及其信息:
105.合并成功后,服务器后端返回合并成功指令,indexeddb收到合并成功指令后,当第一文件为未上传过的文件时,删除indexeddb中储存的第一文件、第一文件的所有信息和第一列表;当第一文件为未完成上传时,删除indexeddb中储存的第二文件、第二文件的所有信息和第二列表。
106.10、结束。
107.总的来说,本发明实施例具有如下有益效果:
108.本发明实施例通过两次对第一文件的类型判断,能准确确定第一文件的类型,进而上传第一文件的未上传部分;并且对于不同类型的第一文件,对未上传部分也做了区分,利用上传id,采用不同的方法确定未上传部分,能准确地定位出当前文件未上传部分的位置,避免重复上传第一文件;并且在上传未上传分块的同时,更新对应列表,能够及时记录分块的上传信息,如果传输突然发生中断,能够根据对应列表快速、准确地定位出当前文件未上传部分的位置;在确定第一文件为未上传过的文件时,可以使用第一文件上传未上传部分,还可以使用数据库存储的第一文件,使用数据库存储第一文件上传未上传部分,能够保证在传输暂停或者异常中断后,使用储存在数据库中的第一文件继续上传,提高文件续传的效率。相比于现有技术能够准确地定位出当前文件未上传部分的位置,不会出现重复上传同一当前文件的问题,提高文件上传的效率。
109.请参参阅图3,本发明实施例还提供了一种文件断点续传的装置,包括:
110.本装置在第一判断模块10前,还包括:
111.数据获取模块1,用于在网页的输入标签获取待上传的第一文件,通过输入标签返
回js的filelist文件对象数组,遍历filelist文件对象数组,得到第一文件的基本信息,其中基本信息包括:文件应用名称、时间戳和文件类型;
112.通过网页中sparkmd5的插件获取第一文件的md5,根据第一文件的md5和基本信息,生成第一文件的预设访问路径。
113.第一判断模块10,用于根据预设访问路径访问数据库,判断数据库中是否存在待上传的第一文件,若不存在,确定第一文件为未上传过的文件,若存在,确定第一文件为已上传过的文件;
114.第一上传模块20,用于当确定第一文件为未上传过的文件时,将第一文件拆分为若干个第一分块;从服务器后端获取第一文件的第一上传id,根据第一上传id,向服务器后端上传若干个第一分块,并根据第一上传id和若干个第一分块的第一上传情况,更新存储在数据库中的第一列表;
115.第二判断模块30,用于当确定第一文件为已上传过的文件时,从数据库中存储的第二列表获取第一文件对应的第二上传id和第一文件对应的第二上传情况;其中,文件的上传情况包括:已完成上传或者未完成上传;
116.第二上传模块40,用于当第二上传情况为未完成上传时,将第一文件拆分为若干个第二分块;确定若干个第二分块中未上传的一个或多个第三分块,根据第二上传id,向服务器后端上传若干个第三分块,并根据第二上传id和若干个第三分块的第二上传情况,更新第二列表。
117.本装置在第二上传模块40后,还包括:
118.合并模块50,用于若干个第一分块、第三分块或第五分块全部上传成功后,向服务器后端发起合并请求,服务器后端收到合并请求后,服务器后端使用第一上传id或者第二上传id将已上传分块进行关联,合并第一上传id或者第二上传id关联出来的全部分块。
119.删除模块60,用于合并成功后,服务器后端返回合并成功指令,数据库收到合并成功指令后,当第一文件为未上传过的文件时,删除数据库中储存的第一文件、第一文件的所有信息和第一列表;当第一文件为未完成上传时,删除数据库中储存的第二文件、第二文件的所有信息和第二列表。
120.在一个实施例中,第一上传模块20还用于:
121.当确定第一文件为未上传过的文件时,向服务器后端发送第一文件的上传接口,获取第一文件的第一上传id;
122.根据第二列表确定第一文件的第二上传情况,或者将第二上传id加入索引,在服务器后端进行查询,确定第一文件的第二上传情况;
123.使用第一上传id向服务器后端发送上传请求,服务器后端收到上传请求后,向服务器后端上传若干个第一分块;
124.使用数据库储存第一文件、第一文件的信息、第一上传id和第一列表,其中,第一文件的信息,包括:基本信息、预设访问路径和md5。
125.在一个实施例中,第二上传模块40还用于:
126.根据第二列表确定若干个第二分块中未上传的一个或多个第三分块,或者将第二上传id加入索引,在服务器后端进行查询,确定第一文件的已上传分块,由已上传分块确定若干个第二分块中未上传的一个或多个第三分块;使用第二上传id向服务器后端发送上传
请求,服务器后端收到上传请求后,向服务器后端上传若干个第三分块。
127.本装置通过两次对第一文件的类型判断,能准确确定第一文件的类型,进而上传第一文件的未上传部分;并且对于不同类型的第一文件,对未上传部分也做了区分,利用上传id,采用不同的方法确定未上传部分,能准确地定位出当前文件未上传部分的位置,避免重复上传第一文件;并且在上传未上传分块的同时,更新对应列表,能够及时记录分块的上传信息,如果传输突然发生中断,能够根据对应列表快速、准确地定位出当前文件未上传部分的位置。相比于现有技术能够准确地定位出当前文件未上传部分的位置,不会出现重复上传同一当前文件的问题,提高文件上传的效率。
128.以上是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
技术特征:
1.一种文件断点续传的方法,其特征在于,包括:根据预设访问路径访问数据库,判断所述数据库中是否存在待上传的第一文件,若不存在,确定所述第一文件为未上传过的文件,若存在,确定所述第一文件为已上传过的文件;当确定所述第一文件为未上传过的文件时,将所述第一文件拆分为若干个第一分块;从服务器后端获取所述第一文件的第一上传id,根据所述第一上传id,向服务器后端上传所述若干个第一分块,并根据所述第一上传id和所述若干个第一分块的第一上传情况,更新存储在数据库中的第一列表;当确定所述第一文件为已上传过的文件时,从所述数据库中存储的第二列表获取所述第一文件对应的第二上传id和所述第一文件对应的第二上传情况;其中,文件的上传情况包括:已完成上传或者未完成上传;当所述第二上传情况为未完成上传时,将所述第一文件拆分为若干个第二分块;确定所述若干个第二分块中未上传的一个或多个第三分块,根据所述第二上传id,向服务器后端上传若干个第三分块,并根据所述第二上传id和所述若干个第三分块的第二上传情况,更新所述第二列表。2.如权利要求1所述的一种文件断点续传的方法,其特征在于,在确定所述第二上传情况为未完成上传之后,还包括:将数据库中存储的第二文件拆分为若干个第四分块;其中,所述第二文件是由上一次上传所述第一文件时存储到数据库中的所述第一文件而获得;确定所述若干个第四分块中未上传的一个或多个第五分块,根据所述第二上传id,向服务器后端上传若干个第五分块,并根据所述第二上传id和所述若干个第五分块的第二上传情况,更新所述第二列表。3.如权利要求1所述的一种文件断点续传的方法,其特征在于,在根据预设访问路径访问数据库之前,还包括:在网页的输入标签获取待上传的所述第一文件,通过所述输入标签返回js的filelist文件对象数组,遍历所述filelist文件对象数组,得到所述第一文件的基本信息,其中所述基本信息包括:文件应用名称、时间戳和文件类型;通过网页中sparkmd5的插件获取所述第一文件的md5,根据所述第一文件的md5和所述基本信息,生成所述第一文件的预设访问路径。4.如权利要求1或2所述的一种文件断点续传的方法,其特征在于,当确定所述第一文件为已上传过的文件时,从所述数据库中存储的第二列表获取所述第一文件对应的第二上传id和所述第一文件的第二上传情况,具体为:当确定所述第一文件为已上传过的文件时,从所述数据库中存储的第二列表获取所述第一文件对应的第二上传id;根据所述第二列表确定所述第一文件的第二上传情况,或者将所述第二上传id加入索引,在所述服务器后端进行查询,确定所述第一文件的第二上传情况。5.如权利要求1所述的一种文件断点续传的方法,其特征在于,确定所述若干个第二分块中未上传的一个或多个第三分块,根据所述第二上传id,向服务器后端上传若干个第三分块,具体为:
根据所述第二列表确定所述若干个第二分块中未上传的一个或多个第三分块,或者将所述第二上传id加入索引,在所述服务器后端进行查询,确定所述第一文件的已上传分块,由所述已上传分块确定所述若干个第二分块中未上传的一个或多个第三分块;使用所述第二上传id向所述服务器后端发送上传请求,所述服务器后端收到所述上传请求后,向所述服务器后端上传若干个第三分块。6.如权利要求1或2所述的一种文件断点续传的方法,其特征在于,在所述更新存储在数据库中的第二列表之后,还包括:所述若干个第一分块、第三分块或第五分块全部上传成功后,向所述服务器后端发起合并请求,所述服务器后端收到所述合并请求后,所述服务器后端使用所述第一上传id或者第二上传id将已上传分块进行关联,合并所述第一上传id或者第二上传id关联出来的全部分块。7.如权利要求1所述的一种文件断点续传的方法,其特征在于,当确定所述第一文件为未上传过的文件时,从服务器后端获取所述第一文件的第一上传id,具体为:当确定所述第一文件为未上传过的文件时,向服务器后端发送所述第一文件的上传接口,获取所述第一文件的所述第一上传id。8.如权利要求1所述的一种文件断点续传的方法,其特征在于,根据所述第一上传id,向服务器后端上传所述若干个第一分块,具体为:使用所述第一上传id向所述服务器后端发送上传请求,所述服务器后端收到所述上传请求后,向所述服务器后端上传所述若干个第一分块。9.如权利要求3所述的一种文件断点续传的方法,其特征在于,从服务器后端获取所述第一文件的第一上传id,根据所述第一上传id,向服务器后端上传所述若干个第一分块,还包括:使用所述数据库储存所述第一文件、第一文件的信息、第一上传id和第一列表,其中,所述第一文件的信息,包括:基本信息、预设访问路径和md5。10.如权利要求6所述的一种文件断点续传的方法,其特征在于,更新存储在数据库中的第二列表,还包括:合并成功后,所述服务器后端返回合并成功指令,所述数据库收到所述合并成功指令后,当所述第一文件为未上传过的文件时,删除所述数据库中储存的所述第一文件、第一文件的所有信息和第一列表;当所述第一文件为未完成上传时,删除所述数据库中储存的所述第二文件、第二文件的所有信息和第二列表。
技术总结
本发明公开了一种文件断点续传的方法,包括:根据预设访问路径访问数据库,根据数据库判断第一文件的类型,当第一文件为未上传过的文件时,将第一文件拆分为若干个第一分块;获取第一上传id,根据第一上传id向服务器后端上传若干个第一分块,更新第一列表;当确定第一文件为已上传过的文件时,获取第二上传id和第一文件的第二上传情况;当第二上传情况为未完成上传时,将第一文件拆分并确定未上传的若干个第三分块,根据第二上传id向服务器后端上传若干个第三分块,并更新第二列表。本发明提出一种文件断点续传的方法,通过添加断点续传方法,能够准确地定位出当前文件未上传部分的位置,并将未上传部分传输至后台服务器。并将未上传部分传输至后台服务器。并将未上传部分传输至后台服务器。
技术研发人员:龙中胜 茅庆江 雷洪文 马文杰
受保护的技术使用者:浩云科技股份有限公司
技术研发日:2023.06.21
技术公布日:2023/10/6
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种超紧凑宽速域组合压气机结构的制作方法 下一篇:一种珊瑚绒面料及其制备方法与流程