文件传输方法及装置与流程

文档序号:31569835发布日期:2022-09-20 22:01阅读:71来源:国知局
文件传输方法及装置与流程

1.本发明涉及数据处理技术领域,尤其涉及一种文件传输方法及装置。


背景技术:

2.目前很多公司在程序开发中,由于业务场景比较复杂,批量文本上传、交互也越来越多,涉及的上传大文本数据也越来越多,且文本数据量也越来越大,如一个txt文本文件包含的数据内容超过300g,并且该大文本数据下发的频率也较高,一般是每天一次或每几个小时一次,因此对业务时效性要求也比较高,很难在短时间内处理这些文本文件数据。随着业务场景的增加,以及业务的变更也越来越频繁,接入的系统越来越多,则对应系统大文本也越来越多。因此,为了使得业务人员能快速高效地查看数据和使用数据,如何高效快速的上传大文本数据的需求也越来越迫切。
3.现有技术中,程序开发中大文件上传方式一般都是纯手工编写代码调用ftp(file transfer protocol,文件传输协议)方法进行上传处理或者根据现有的断点续传串行方式进行上传。这种对文件进行逐一串行ftp上传处理的方式,导致文件的上传处理性能较慢,使得文件上传性能比较差和效率比较低下等。


技术实现要素:

4.本发明提供一种文件传输方法及装置,用以解决现有技术中文件上传性能差和效率低的缺陷,实现快速稳定地对文件进行传输。
5.本发明提供一种文件传输方法,包括:
6.根据待传输文件的内容信息,对所述待传输文件进行编码;
7.在服务器的文件传输列表中查找与所述待传输文件具有相同编码值的目标文件;
8.在未查找到所述目标文件的情况下,若判断获知所述待传输文件的文件大小大于预设阈值的情况下,对所述待传输文件进行拆分,得到所述待传输文件的多个子文件;
9.从线程池中调用多个线程,基于所述多个线程中的每一线程,将所述每一线程对应的子文件传输至所述服务器,以供所述服务器在确定所述待传输文件中所有子文件的传输状态均为传输完成的情况下,对所述待传输文件中的所有子文件进行合并;其中,所述多个线程并行执行文件传输操作。
10.根据本发明提供的一种文件传输方法,所述基于所述多个线程中的每一线程,将所述每一线程对应的子文件传输至所述服务器,包括:
11.根据每一子文件的内容信息,对所述每一子文件进行编码;
12.在确定所述多个子文件中存在编码值与所述文件传输列表中的至少一个编码值相同的第一目标子文件的情况下,将所述第一目标子文件的传输状态更新为传输完成,并将所述第一目标子文件的编码值存储在所述文件传输列表中;
13.获取所述多个子文件中除所述第一目标子文件外的第二目标子文件;
14.基于所述多个线程中的每一线程,将所述每一线程对应的第二目标子文件传输至
所述服务器。
15.根据本发明提供的一种文件传输方法,所述从线程池中调用多个线程,基于所述多个线程中的每一线程,将所述每一线程对应的子文件传输至所述服务器,包括:
16.根据所述线程池中线程的总数量和每一线程的运行情况,确定调用所述线程的目标数量;
17.在所述目标数量小于所述待传输文件中待传输子文件的数量的情况下,调用所述目标数量的线程,基于所述目标数量的线程中的每一线程,将所述每一线程对应的待传输子文件传输至所述服务器,并持续监听所述线程池中每一线程的运行情况和获取所述待传输文件中剩余待传输子文件的数量;
18.在确定所述线程池中存在运行状态为空闲状态的目标线程的情况下,调用所述目标线程,将所述目标线程对应的剩余待传输子文件传输至所述服务器,直到所述目标文件中的所有子文件均传输完成。
19.根据本发明提供的一种文件传输方法,所述方法还包括:
20.在查找到所述目标文件的情况下,将所述待传输文件的传输状态更新为传输完成,并将所述待传输文件的编码值存储在所述文件传输列表。
21.根据本发明提供的一种文件传输方法,所述方法还包括:
22.在查找到所述目标文件的情况下,从所述服务器中获取所述目标文件的传输进度和文件名称;
23.根据目标文件的传输进度和文件名称生成提示信息,并将所述提示信息发送至终端;其中,所述提示信息用于提示用户所述服务器中已传输有所述目标文件,以及所述目标文件的传输进度和文件名称。
24.根据本发明提供的一种文件传输方法,所述对所述待传输文件进行拆分,包括:
25.根据所述待传输文件的属性信息,获取所述待传输文件的拆分策略;
26.根据所述拆分策略,对所述待传输文件进行拆分;
27.所述对所述待传输文件中所有子文件进行合并,包括:
28.根据所述拆分策略对应的合并策略,对所述待传输文件中所有子文件进行合并。
29.根据本发明提供的一种文件传输方法,所述根据待传输文件的内容信息,对所述待传输文件进行编码,包括:
30.根据所述待传输文件的内容信息和信息摘要算法,对所述待传输文件进行编码。
31.本发明还提供一种文件传输装置,包括:
32.编码模块,用于根据待传输文件的内容信息,对所述待传输文件进行编码;
33.查找模块,用于在服务器的文件传输列表中查找与所述待传输文件具有相同编码值的目标文件;
34.拆分模块,用于在未查找到所述目标文件的情况下,若判断获知所述待传输文件的文件大小大于预设阈值的情况下,对所述待传输文件进行拆分,得到所述待传输文件的多个子文件;
35.传输模块,用于从线程池中调用多个线程,基于所述多个线程中的每一线程,将所述每一线程对应的子文件传输至所述服务器,以供所述服务器在确定所述待传输文件中所有子文件的传输状态均为传输完成的情况下,对所述待传输文件中的所有子文件进行合
并;其中,所述多个线程并行执行文件传输操作。
36.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述文件传输方法。
37.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述文件传输方法。
38.本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述文件传输方法。
39.本发明提供的文件传输方法及装置,一方面通过对待传输文件的内容信息进行编码,以在服务器中已传输有与待传输文件具有相同编码值的目标文件的情况下,不用重复上传待传输文件,并达到待传输文件秒传结束的效果,有效避免服务器资源的冗余占用,提高文件复用率;另一方面,在服务器中未传输有与待传输文件具有相同编码值的目标文件的情况下,对待传输文件进行分片并发传输至服务器后再合并,有效提高文件传输的效率和准确性,有效提高用户体验感;并且可适用于各种文件大小的待传输文件,通用性好,复用率高。
附图说明
40.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
41.图1是本发明提供的文件传输方法的流程示意图;
42.图2是本发明提供的文件传输装置的结构示意图;
43.图3是本发明提供的电子设备的结构示意图。
具体实施方式
44.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
45.现有技术中,在程序开发中文件上传方式一般都是纯手工编写代码调用ftp方法上传处理或者根据业界的断点续传串行方式进行上传。在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,这样一个一个的串行ftp上传处理,文件的上传处理性能非常慢,所以使得文件处理性能比较差和效率比较低下等。另外,采用这种串行上传的方式,持续周期较长,很容易出现中断传输,一旦中断传输后只能重头开始上传,进一步延长的文件传输时间,用户体验感差。
46.综上,现有技术中针对大文本的上传方式,不仅增加了不必要的工作量同时也给高效的处理数据也引入了质量风险;并且数据文本数据量过大,增加了延后的风险,而且也增加了业务人员使用文件的时效性,用户体验感差。
47.为了解决上述问题,本技术提出一种文件传输方法,该方法针对待传输文件进行编码和校验,在服务器中存在与待传输文件的编码值一致的目标文件的情况下,不用重复上传待传输文件,并达到待传输文件秒传结束的效果;在服务器中不存在与待传输文件的编码值一致的目标文件的情况下,对待传输文件进行分片并发上传后再合并,即可将待传输文件高效准确地传输至服务器,延迟性比较低,通用性比较好,复用率比较高,有效提高用户体验感。
48.需要说明的是,该方法的执行主体可以是电子设备、电子设备中的部件或芯片。该电子设备可以是移动电子设备,也可以为非移动电子设备。示例性的,移动电子设备可以为手机、平板电脑、笔记本电脑等,非移动电子设备可以为服务器、网络附属存储器、个人计算机、等,本发明不作具体限定。
49.本实施例的文件传输方法可以基于java语言或c语言等进行实现。
50.下面结合图1描述本发明的文件传输方法,该方法包括如下步骤:
51.步骤101,根据待传输文件的内容信息,对所述待传输文件进行编码;
52.其中,本实施例中的文件传输方法既可应用于文件上传场景也可以用于文件下发场景。
53.待传输文件为需要传输至服务器的文件,具体类型包括但不限于交易类文件和日志类文件等,本实施例对此不做具体地限定。
54.可选地,在读取到待传输文件的情况下,根据待传输文件的内容信息,对待传输文件进行编码,得到待传输文件的编码值,使得不同内容信息的待传输文件具有不同的编码值,相同内容信息的待传输文件具有相同的编码值。
55.步骤102,在服务器的文件传输列表中查找与所述待传输文件具有相同编码值的目标文件;
56.其中,服务器的文件传输列表为已传输到服务器的所有文件形成的列表,文件传输列表中包含但不限于各文件的文件名称和文件的编码值。
57.可选地,在获取到待传输文件的编码值后,可以根据待传输文件的编码值在服务器列表中查找与待传输文件具有相同编码值的目标文件,以确定服务器中是否已传输有与待传输文件的内容信息一致的目标文件。
58.步骤103,在未查找到所述目标文件的情况下,若判断获知所述待传输文件的文件大小大于预设阈值的情况下,对所述待传输文件进行拆分,得到所述待传输文件的多个子文件;
59.其中,预设阈值可以根据线程池中线程性能参数进行预先设置或者实际需求进行预先设置,本实施例对此不做具体地限定。如根据线程池中每一线程的传输容量进行确定。
60.可选地,在未查找到目标文件的情况下,表征服务器中未传输有与待传输文件的内容信息一致的目标文件,此时将待传输文件上传至服务器中。
61.可选地,根据待传输文件的属性信息,获取待传输文件的文件大小;将待传输文件的文件大小与预设阈值进行比较,在待传输文件的文件大小小于或等于预设阈值的情况下,表征待传输文件较小,可直接通过线程快速传输至服务器。其中,属性信息包括但不限于文件名称和文件大小。
62.在待传输文件的文件大小大于预设阈值的情况下,表征待传输文件较大,需要对
待传输文件进行拆分,以将待传输文件拆分为多个子文件。
63.其中,拆分方式包括但不限于根据预设阈值和文件大小,确定拆分数量,根据拆分数量将待传输文件拆分为多个子文件;
64.或者根据预设阈值和文件大小,确定拆分大小,将待传输文件拆分为文件大小相同的子文件。
65.步骤104,从线程池中调用多个线程,基于所述多个线程中的每一线程,将所述每一线程对应的子文件传输至所述服务器,以供所述服务器在确定所述待传输文件中所有子文件的传输状态均为传输完成的情况下,对所述待传输文件中的所有子文件进行合并;其中,所述多个线程并行执行文件传输操作。
66.其中,多线程是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级的多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段即为线程,利用它编程的概念即为多线程处理。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。
67.线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池可插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程,但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。
68.可选地,在得到待传输文件的多个子文件之后,可以对子文件进行处理后,再调用多个线程将并行将各自对应的处理后的子文件传输至服务器;也可以直接调用多个线程将各自对应的子文件并行传输至服务器。
69.服务器在确定待传输文件中所有子文件的传输状态均为传输完成的情况下,对待传输文件中的所有子文件进行合并,以得到完整的待传输文件,并将待传输文件的传输状态更新为传输完成,并将待传输文件的编码值保存在文件传输列表中。
70.其中,线程的调用数量可以根据线程池中线程数量和线程运行情况,以及需要传输的子文件的数量进行确定。
71.在查找到目标文件的情况下,表征服务器中已传输有与待传输文件的内容信息一致的目标文件,此时不用重复上传待传输文件,以达到待传输文件秒传结束的效果。
72.本实施例中一方面通过对待传输文件的内容信息进行编码,以在服务器中已传输有与待传输文件具有相同编码值的目标文件的情况下,不用重复上传待传输文件,并达到待传输文件秒传结束的效果,有效避免服务器资源的冗余占用,提高文件复用率;另一方面,在服务器中未传输有与待传输文件具有相同编码值的目标文件的情况下,对待传输文件进行分片并发传输至服务器后再合并,有效提高文件传输的效率和准确性,有效提高用户体验感;并且可适用于各种文件大小的待传输文件,通用性好,复用率高。
73.在一些实施例中,所述基于所述多个线程中的每一线程,将所述每一线程对应的
子文件传输至所述服务器,包括:根据每一子文件的内容信息,对所述每一子文件进行编码;在确定所述多个子文件中存在编码值与所述文件传输列表中的至少一个编码值相同的第一目标子文件的情况下,将所述第一目标子文件的传输状态更新为传输完成,并将所述第一目标子文件的编码值存储在所述文件传输列表中;获取所述多个子文件中除所述第一目标子文件外的第二目标子文件;基于所述多个线程中的每一线程,将所述每一线程对应的第二目标子文件传输至所述服务器。
74.可选地,步骤104中采用多线程对各自对应的子文件进行并行传输的步骤具体包括:
75.首先,获取对待传输文件进行拆分后得到的多个子文件;
76.然后,对于每一子文件执行如下步骤:
77.根据当前子文件的内容信息,对当前子文件进行编码,得到当前子文件的编码值,使得不同内容信息的子文件具有不同的编码值,相同内容信息的子文件具有相同的编码值。
78.在获取到当前子文件的编码值后,可以查找服务器的文件传输列表中是否存在与当前子文件的编码值相同的编码值,在查找到的情况下,则确定服务器中已传输有与当前子文件的内容信息一致的目标子文件,此时可以将当前子文件作为第一目标子文件;在未查找到的情况下,则确定服务器中未传输有与当前子文件的内容信息一致的目标子文件,此时可以将当前子文件作为第二目标子文件。
79.在获取到多个子文件中的第一目标子文件的情况下,确定服务器中已传输有与第一目标子文件的内容信息一致的目标子文件,此时不用重复上传第一目标子文件,以达到待传输文件秒传结束的效果。
80.同时,将第一目标子文件的传输状态更新为传输完成,并将第一目标子文件的编码值存储在所述文件传输列表中,以对服务器的文件传输列表进行更新,为下一待传输文件提供参考,进而提高文件的复用率和减少服务器资源的冗余占用。
81.同时,获取多个子文件中除第一目标子文件外的第二目标子文件,并且调用线程池中的多线程,基于多线程ftp,将每一线程对应的第二目标子文件并行传输至服务器。服务器确定各第二目标子文件传输完成后,将各第二目标子文件的传输状态更新为传输完成。
82.其中,ftp是用于在网络上进行文件传输的一套标准协议。
83.服务器在确定待传输文件中所有子文件的传输状态均为传输完成的情况下,对待传输文件中的所有子文件进行合并,以得到完整的待传输文件,并对待传输文件进行保存,以及将待传输文件的传输状态更新为传输完成,并将待传输文件的编码值保存在文件传输列表中。
84.本实施例通过对子文件进行编码值验证,以在服务器中已传输有与子文件具有相同编码值的目标子文件的情况下,不用重复上传子文件,并达到子文件秒传结束的效果,有效避免服务器资源的冗余占用,提高文件复用率,并且可有效提高文件传输的效率和准确性,有效提高用户体验感。
85.在一些实施例中,所述从线程池中调用多个线程,基于所述多个线程中的每一线程,将所述每一线程对应的子文件传输至所述服务器,包括:
86.根据所述线程池中线程的总数量和每一线程的运行情况,确定调用所述线程的目标数量;在所述目标数量小于所述待传输文件中待传输子文件的数量的情况下,调用所述目标数量的线程,基于所述目标数量的线程中的每一线程,将所述每一线程对应的待传输子文件传输至所述服务器,并持续监听所述线程池中每一线程的运行情况和获取所述待传输文件中剩余待传输子文件的数量;在确定所述线程池中存在运行状态为空闲状态的目标线程的情况下,调用所述目标线程,将所述目标线程对应的剩余待传输子文件传输至所述服务器,直到所述目标文件中的所有子文件均传输完成。
87.其中,待传输子文件为待传输文件中等待传输的子文件。
88.剩余待传输子文件为当前调用线程进行文件传输后待传输文件中剩余的待传输子文件。
89.可选地,步骤104中传输子文件的步骤具体包括:
90.首先,获取线程池中线程的总数量和每一线程的运行情况;
91.然后,根据线程池中线程的总数量和每一线程的运行情况,确定线程池中处于空闲状态的线程的总数量,根据处于空闲状态的线程的总数量确定调用线程的目标数量;
92.将目标数量与待传输文件中待传输子文件的数量进行比较,在目标数量大于或等于待传输文件中待传输子文件的数量的情况下,可一次性将多个待传输子文件并行传输至服务器;此时,直接调用目标数量的线程,基于目标数量的线程将各自对应的待传输子文件一次性并行传输至服务器。
93.在目标数量小于待传输文件中待传输子文件的数量的情况下,无法一次性将多个待传输子文件并行传输至服务器;此时,先调用目标数量的线程,基于目标数量的线程将各自对应的待传输子文件并行传输至服务器;并持续监听线程池中每一线程的运行情况,在确定线程池中存在运行状态为空闲状态的目标线程的情况下,再调用目标线程将目标文件中剩余待传输子文件传输至服务器,直到待传输文件中的所有子文件均传输完成。
94.本实施例中,通过根据线程池中每一线程的运行情况以及待传输子文件的数量,适应性地确定不同的文件传输策略,并根据相应的文件传输策略对待传输文件中的子文件进行分片并行传输,有效确保文件传输的有效性和准确性,避免因为拥塞造成文件数据丢失。
95.在一些实施例中,所述方法还包括:在查找到所述目标文件的情况下,将所述待传输文件的传输状态更新为传输完成,并将所述待传输文件的编码值存储在所述文件传输列表。
96.可选地,在查找到与待传输文件的编码值一致的目标文件,表征服务器中已传输有与待传输文件的内容信息一致的目标文件,此时不用重复上传待传输文件,此时可以将待传输文件的传输状态更新为传输完成,并将待传输文件的编码值存储在服务器的文件传输列表中,以对服务器的文件传输列表进行更新,为下一待传输文件提供参考,进而提高文件的复用率和减少服务器资源的冗余占用。
97.此外,也可以将待传输文件的存储在服务器的文件传输列表中。
98.在一些实施例中,在查找到所述目标文件的情况下,从所述服务器中获取所述目标文件的传输进度和文件名称;根据目标文件的传输进度和文件名称生成提示信息,并将所述提示信息发送至终端;其中,所述提示信息用于提示用户所述服务器中已传输有所述
目标文件,以及所述目标文件的传输进度和文件名称。
99.可选地,在查找到与待传输文件的编码值一致的目标文件,表征服务器中已传输有与待传输文件的内容信息一致的目标文件。此时,可以从服务器中获取目标文件的传输进度和文件名称,以根据目标文件的传输进度和文件名称生成提示信息,并将提示信息发送至终端,以提示用户,服务器中已传输有与待传输文件的编码值一致的目标文件,并以提示信息的形式将用户目标文件的文件名称和传输进度展示给用户,以便用户实时获取目标文件的文件名称和目标文件的传输进度,提升用户体验感。
100.在一些实施例中,所述对所述待传输文件进行拆分,包括:根据所述待传输文件的属性信息,获取所述待传输文件的拆分策略;根据所述拆分策略,对所述待传输文件进行拆分;所述对所述待传输文件中所有子文件进行合并,包括:根据所述拆分策略对应的合并策略,对所述待传输文件中所有子文件进行合并。
101.其中,不同属性信息的文件具有不同的拆分策略和合并策略。
102.属性信息包括待传输文件的文件大小和文件类型。
103.拆分策略包括但不限于拆分大小、拆分数量和拆分方式。
104.可选地,在对待传输文件进行拆分时,可以根据文件大小确定待传输文件的拆分大小和拆分方式,或者拆分数量和拆分方式;
105.然后,按照拆分大小和拆分方式,对待传输文件进行拆分,以将待传输文件拆分为文件大小满足拆分大小的多个子文件;或者按照拆分数量和拆分方式,对待传输文件进行拆分,以将待传输文件拆分为文件数量满足拆分数量的多个子文件,本实施例对此不作具体地限定。
106.相应地,在对待传输文件进行拆分时,需要根据拆分策略获取对应的合并策略,以对待传输文件中所有子文件进行合并,保证待传输文件的完整性。
107.其中,拆分策略和合并策略是一一对应的。
108.本实施例中根据待传输文件的属性信息,即可快速准确地将待传输文件拆分为多个子文件。
109.在一些实施例中,所述根据待传输文件的内容信息,对所述待传输文件进行编码,包括:根据所述待传输文件的内容信息和信息摘要算法,对所述待传输文件进行编码。
110.其中,信息摘要算法可以为md5(message digest algorithm,信息摘要算法第5版)。
111.可选地,在对文件进行编码时,具体可以根据待传输文件的内容信息,对待传输文件进行md5编码,以获取待传输文件对应的md5值。
112.然后在文件传输过程中,在文件传输列表中查找与待传输文件具有相同md5值的目标文件,以快速准确地获取与待传输文件的内容信息一致的目标文件。
113.本实施例中的文件传输方法的完整步骤如下:
114.(1),读取待传输文件的属性信息,包括文件名称、文件大小和文件类型等;
115.(2),根据读取的待传输文件的内容信息,对待传输文件进行编码;然后查看服务器的文件传输列表中是否有与待传输文件的编码值相同的目标文件;如果有,则不用上传待传输文件并达到秒传结束,在服务器上记录待传输文件的编码值和文件名称,并更新传输状态为传输完成;
116.(3),如果没有,则判断待传输文件的文件大小是否大于预设阈值,在大于预设阈值的情况下,确定待传输文件为大文件,需要对待传输文件进行拆分,得到多个子文件;
117.(4),分别对多个子文件进行编码,并确定多个文件中与服务器中的一个编码值相同的第一目标子文件,不用上传第一目标子文件并达到秒传结束的效果;将多个子文件中除第一目标子文件外的子文件作为第二目标子文件;
118.(5),从线程池中调用多个线程,每一线程fpt传输一个第二目标子文件至服务器;
119.(6),在所有子文件均传输完成后,在根据分片规则对应的合并规则进行合并操作,并保存待传输文件的编码值和传输成功结果;全部子文件合并完成后,将待传输文件的传输状态更新为传输完成。
120.现有技术中通过人工编写代码对文件进行串行传输,高效性非常差,不能快速处理大文件,人为因素对大文件处理高效性影响较大。
121.而本技术可以针对各种文件大小的文件进行传输,传输过程中进行文件编码、分片、上传和合并等操作,以在文件传输过程中进行并发分步操作处理,使用者只需要对文件处理方法中参数进行调用,即可高效的上传各种文件大小的文件,且可以直接复用到各种文件中,不需要开发即可直接使用,减少开发人员很多不必要的工作量。同时实现批量大文本快速准确地上传,对后续数据文件使用也越来越高效;通过编码和分片等操作对文件进行传输,不仅处理逻辑简单,通用性比较好,开发的功能复用率比较高,而且延迟性比较低;避免传统的手工编码代码实现文件传输时,存在性能比较低,数据使用延迟性比较高、处理灵活性和通用性较差的问题。
122.下面对本发明提供的文件传输装置进行描述,下文描述的文件传输装置与上文描述的文件传输方法可相互对应参照。
123.如图2所示,为本实施例提供的一种文件传输装置,该装置包括编码模块201、查找模块202、拆分模块203和传输模块204,其中:
124.编码模块201用于根据待传输文件的内容信息,对所述待传输文件进行编码;
125.可选地,在读取到待传输文件的情况下,根据待传输文件的内容信息,对待传输文件进行编码,得到待传输文件的编码值,使得不同内容信息的待传输文件具有不同的编码值,相同内容信息的待传输文件具有相同的编码值。
126.查找模块202用于在服务器的文件传输列表中查找与所述待传输文件具有相同编码值的目标文件;
127.可选地,在获取到待传输文件的编码值后,可以根据待传输文件的编码值在服务器列表中查找与待传输文件具有相同编码值的目标文件,以确定服务器中是否已传输有与待传输文件的内容信息一致的目标文件。
128.拆分模块203用于在未查找到所述目标文件的情况下,若判断获知所述待传输文件的文件大小大于预设阈值的情况下,对所述待传输文件进行拆分,得到所述待传输文件的多个子文件;
129.可选地,在未查找到目标文件的情况下,表征服务器中未传输有与待传输文件的内容信息一致的目标文件,此时将待传输文件上传至服务器中。
130.可选地,根据待传输文件的属性信息,获取待传输文件的文件大小;将待传输文件的文件大小与预设阈值进行比较,在待传输文件的文件大小小于或等于预设阈值的情况
下,表征待传输文件较小,可直接通过线程快速传输至服务器。其中,属性信息包括但不限于文件名称和文件大小。
131.在待传输文件的文件大小大于预设阈值的情况下,表征待传输文件较大,需要对待传输文件进行拆分,以将待传输文件拆分为多个子文件。
132.其中,拆分方式包括但不限于根据预设阈值和文件大小,确定拆分数量,根据拆分数量将待传输文件拆分为多个子文件;
133.或者根据预设阈值和文件大小,确定拆分大小,将待传输文件拆分为文件大小相同的子文件。
134.传输模块204用于从线程池中调用多个线程,基于所述多个线程中的每一线程,将所述每一线程对应的子文件传输至所述服务器,以供所述服务器在确定所述待传输文件中所有子文件的传输状态均为传输完成的情况下,对所述待传输文件中的所有子文件进行合并;其中,所述多个线程并行执行文件传输操作。
135.可选地,在得到待传输文件的多个子文件之后,可以对子文件进行处理后,再调用多个线程将并行将各自对应的处理后的子文件传输至服务器;也可以直接调用多个线程将各自对应的子文件并行传输至服务器。
136.服务器在确定待传输文件中所有子文件的传输状态均为传输完成的情况下,对待传输文件中的所有子文件进行合并,以得到完整的待传输文件,并将待传输文件的传输状态更新为传输完成,并将待传输文件的编码值保存在文件传输列表中。
137.其中,线程的调用数量可以根据线程池中线程数量和线程运行情况,以及需要传输的子文件的数量进行确定。
138.在查找到目标文件的情况下,表征服务器中已传输有与待传输文件的内容信息一致的目标文件,此时不用重复上传待传输文件,以达到待传输文件秒传结束的效果。
139.本实施例中一方面通过对待传输文件的内容信息进行编码,以在服务器中已传输有与待传输文件具有相同编码值的目标文件的情况下,不用重复上传待传输文件,并达到待传输文件秒传结束的效果,有效避免服务器资源的冗余占用,提高文件复用率;另一方面,在服务器中未传输有与待传输文件具有相同编码值的目标文件的情况下,对待传输文件进行分片并发传输至服务器后再合并,有效提高文件传输的效率和准确性,有效提高用户体验感;并且可适用于各种文件大小的待传输文件,通用性好,复用率高。
140.图3示例了一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)301、通信接口(communications interface)302、存储器(memory)303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信。处理器301可以调用存储器303中的逻辑指令,以执行文件传输方法,该方法包括:根据待传输文件的内容信息,对所述待传输文件进行编码;在服务器的文件传输列表中查找与所述待传输文件具有相同编码值的目标文件;在未查找到所述目标文件的情况下,若判断获知所述待传输文件的文件大小大于预设阈值的情况下,对所述待传输文件进行拆分,得到所述待传输文件的多个子文件;从线程池中调用多个线程,基于所述多个线程中的每一线程,将所述每一线程对应的子文件传输至所述服务器,以供所述服务器在确定所述待传输文件中所有子文件的传输状态均为传输完成的情况下,对所述待传输文件中的所有子文件进行合并;其中,所述多个线程并行执行文件传输操作。
141.此外,上述的存储器303中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
142.另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的文件传输方法,该方法包括:根据待传输文件的内容信息,对所述待传输文件进行编码;在服务器的文件传输列表中查找与所述待传输文件具有相同编码值的目标文件;在未查找到所述目标文件的情况下,若判断获知所述待传输文件的文件大小大于预设阈值的情况下,对所述待传输文件进行拆分,得到所述待传输文件的多个子文件;从线程池中调用多个线程,基于所述多个线程中的每一线程,将所述每一线程对应的子文件传输至所述服务器,以供所述服务器在确定所述待传输文件中所有子文件的传输状态均为传输完成的情况下,对所述待传输文件中的所有子文件进行合并;其中,所述多个线程并行执行文件传输操作。
143.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的文件传输方法,该方法包括:根据待传输文件的内容信息,对所述待传输文件进行编码;在服务器的文件传输列表中查找与所述待传输文件具有相同编码值的目标文件;在未查找到所述目标文件的情况下,若判断获知所述待传输文件的文件大小大于预设阈值的情况下,对所述待传输文件进行拆分,得到所述待传输文件的多个子文件;从线程池中调用多个线程,基于所述多个线程中的每一线程,将所述每一线程对应的子文件传输至所述服务器,以供所述服务器在确定所述待传输文件中所有子文件的传输状态均为传输完成的情况下,对所述待传输文件中的所有子文件进行合并;其中,所述多个线程并行执行文件传输操作。
144.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
145.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
146.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管
参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1