CN115865895A - 一种文件上传方法、装置及存储介质 - Google Patents
一种文件上传方法、装置及存储介质 Download PDFInfo
- Publication number
- CN115865895A CN115865895A CN202211468648.2A CN202211468648A CN115865895A CN 115865895 A CN115865895 A CN 115865895A CN 202211468648 A CN202211468648 A CN 202211468648A CN 115865895 A CN115865895 A CN 115865895A
- Authority
- CN
- China
- Prior art keywords
- data
- transmitted
- uploading
- target file
- identifier
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 76
- 239000012634 fragment Substances 0.000 claims abstract description 204
- 238000012795 verification Methods 0.000 claims description 62
- 238000013467 fragmentation Methods 0.000 claims description 41
- 238000006062 fragmentation reaction Methods 0.000 claims description 41
- 238000012545 processing Methods 0.000 claims description 25
- 230000008569 process Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 238000005034 decoration Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 241000287828 Gallus gallus Species 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种文件上传方法、装置及存储介质,包括:基于与目标待传文件相关联的上传标识判断是否存在上传记录,获取判断结果;当指示存在上传记录时,将所述上传记录中的数据标识和目标待传文件的所有分片数据对应的数据标识进行比对,确定第一数据标识;确定每个第一数据标识对应的第一待传分片数据;创建线程池,将每个第一数据标识和第一待传分片数据发送至服务端,并接收服务端返回的上传成功标记;对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示上传成功时,对上传记录进行更新;当更新后的上传记录中的数据标识和所述目标待传文件的所有分片数据对应的数据标识一致时,发送上传成功信息至服务端。
Description
技术领域
本发明涉及信息处理技术领域,并且更具体地,涉及一种文件上传方法、装置及存储介质。
背景技术
上传就是将信息从本地计算机传送至中央计算机(远程计算机)***上,让网络上的人都能看到。将制作好的网页、文字、图片、视频等通过Web或者Ftp传送至互联网上的服务器***,这一过程称为上传。一说到文件上传,想必大家都并不陌生,更何况是利用AFNetworking(PS:后期统称AF)来做,那更是小菜一碟。比如开发中常见的场景:头像上传,九宫格图片上传...等等,这些场景无一不使用到文件上传的功能。
如果利用AF来实现,无非就是客户端调用AF提供的文件上传接口即可。这种场景,主要是针对一些小资源文件的上传,上传过程耗时较短,用户可以接受。其缺点在于:只可以上传一些小文件;如果上传失败之后必须重新上传,已经上传部分会浪费。因此,一旦资源文件过大(比如1G以上),则必须要考虑上传过程网络中断的情况。试想还是采用上述方案,一口气把这整个1G的资源文件上传到服务器,这显然是不现实的,考虑到网络使用中断或服务器上传异常等场景,那么恢复网络后又得重新从头开始上传,那之前已经上传完成的部分资源岂不作废,这种耗时耗力的工作,显然是不符合常理的。
因此,需要一种文件上传的方法。
发明内容
本发明要解决的问题包括如何高效准确地实现大存储容量的文件的上传,为此,提出了本发明。本发明的实施例提供了一种文件上传方法、装置及存储介质。
根据本发明实施例的一个方面,提供了一种文件上传方法,所述方法包括:
基于与目标待传文件相关联的上传标识判断所述目标待传文件是否存在上传记录,获取判断结果;
当所述判断结果指示所述目标待传文件存在上传记录时,将所述上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,确定至少一个未上传成功的待传分片数据对应的第一数据标识;
确定每个第一数据标识对应的第一待传分片数据;
创建线程池,将每个第一数据标识和每个第一数据标识对应的第一待传分片数据发送至服务端,并接收服务端返回的与每个第一数据标识关联的上传成功标记;
对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示上传成功时,基于所述任一个第一数据标识对所述上传记录进行更新;
当更新后的上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识一致时,发送上传成功信息至服务端。
可选地,其中所述方法还包括:
当所述判断结果指示所述目标待传文件不存在上传记录时,按照预设分片规则对所述目标待传文件进行分片处理,获取至少一个第一待传分片数据,为每个第一待传分片数据分配唯一的数据标识,并更新与所述目标待传文件相关联的上传标识。
可选地,其中所述按照预设分片规则对所述目标待传文件进行分片处理,获取至少一个第一待传分片数据,包括:
若所述目标待传文件的大小小于第一预设阈值,则直接将所述目标待传文件作为第一待传分片数据;
若所述目标待传文件的大小大于等于所述第一预设阈值且小于等于第二预设阈值,则按照每个分片数据的大小为第一预设阈值进行分片,获取至少一个第一待传分片数据;
若所述目标待传文件的大小大于所述第二预设阈值,则按照预设分片数量进行分片,以获取预设分片数量的第一待传分片数据。
可选地,其中所述方法还包括:
当所述判断结果指示所述目标待传文件存在上传记录时,基于所述目标待传文件的文件信息发送已上传成功的分片数据获取请求,并接收服务端基于所述分片数据获取请求返回的在服务端已上传成功的分片数据对应的数据标识;
将接收的在服务端已上传成功的分片数据对应的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,以确定未成功上传的第二数据标识;
对于任一个第二数据标识,当所述任一个第二数据标识不是第一数据标识时,将所述第二数据标识作为第一数据标识。
可选地,其中所述方法还包括:
对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示未上传成功时,重新进行上传。
可选地,其中所述方法还包括:
在所述服务端在接收到所述上传成功信息时,基于数据标识判断所有的分片数据是否均存在;
当确定所有的分片数据均存在时,对所有的分片数据进行md5校验,并当所有的分片数据均通过md5校验后,进行分片数据的合并,以获取所述目标待传文件,并返回上传成功信息至本地端;或当确定所有的分片数据均存在时,按照数据标识的顺序对在服务端已上传成功的分片数据进行合并,以获取合成文件,对所述合成文件进行md5校验,并当所述合成文件通过md5校验时,返回上传成功消息至本地端。
可选地,其中所述方法还包括:
当确定存在分片数据未通过md5校验时,服务端发送包含未通过md5校验的分片数据的数据标识的上传失败信息至本地端,以使得本地端基于所述上传失败信息重新进行未通过md5校验的分片数据的上传;
当所述合成文件未通过md5校验时,对所有的分片数据进行md5校验,并发送包含未通过md5校验的分片数据的数据标识的上传失败信息至本地端,以使得本地端基于所述上传失败信息重新进行未通过md5校验的分片数据的上传。
根据本发明实施例的另一个方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时由处理器执行以上所述的方法。
根据本发明实施例的又一个方面,提供了一种文件上传装置,所述装置包括:
判断模块,用于基于与目标待传文件相关联的上传标识判断所述目标待传文件是否存在上传记录,获取判断结果;
第一数据标识确定模块,用于当所述判断结果指示所述目标待传文件存在上传记录时,将所述上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,确定至少一个未上传成功的待传分片数据对应的第一数据标识;
第一待传分片数据确定模块,用于确定每个第一数据标识对应的第一待传分片数据;
上传模块,用于创建线程池,将每个第一数据标识和每个第一数据标识对应的第一待传分片数据发送至服务端,并接收服务端返回的与每个第一数据标识关联的上传成功标记;
上传记录更新模块,用于对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示上传成功时,基于所述任一个第一数据标识对所述上传记录进行更新;
消息反馈模块,用于当更新后的上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识一致时,发送上传成功信息至服务端。
根据本发明实施例的又一个方面,提供了一种文件上传装置,所述装置包括:
处理器;以及
存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:
基于与目标待传文件相关联的上传标识判断所述目标待传文件是否存在上传记录,获取判断结果;
当所述判断结果指示所述目标待传文件存在上传记录时,将所述上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,确定至少一个未上传成功的待传分片数据对应的第一数据标识;
确定每个第一数据标识对应的第一待传分片数据;
创建线程池,将每个第一数据标识和每个第一数据标识对应的第一待传分片数据发送至服务端,并接收服务端返回的与每个第一数据标识关联的上传成功标记;
对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示上传成功时,基于所述任一个第一数据标识对所述上传记录进行更新;
当更新后的上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识一致时,发送上传成功信息至服务端。
本发明实施例提供了一种文件上传方法、装置及存储介质,包括:基于与目标待传文件相关联的上传标识判断所述目标待传文件是否存在上传记录,获取判断结果;当所述判断结果指示所述目标待传文件存在上传记录时,将所述上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,确定至少一个未上传成功的待传分片数据对应的第一数据标识;确定每个第一数据标识对应的第一待传分片数据;创建线程池,将每个第一数据标识和每个第一数据标识对应的第一待传分片数据发送至服务端,并接收服务端返回的与每个第一数据标识关联的上传成功标记;对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示上传成功时,基于所述任一个第一数据标识对所述上传记录进行更新;当更新后的上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识一致时,发送上传成功信息至服务端。本发明的方法可以突破php或nginx上传大小限制,可以使用异步或多线程上传来提高上传速度,在javascript中可以使用xmlhttprequest进行异步上传,在PHP中可以使用协程库GuzzleHttp进行并发上传,其它语言也可以使用多线程的方式上传,还可以开多个浏览器上传,多个同时一块传都可以;能够实现断线重传,如果在上传过程中,网络中断,可以在网络恢复后以块大小为单位,进行重传,已经上传的成功的分片就不需要再次上传;以本地端进行上传的记录,这可以减少服务端工作量,这样服务器的资源可以应用于其他更重要的地方。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
图1是用于实现根据本发明实施例1所述的方法的计算机终端(或移动设备)的硬件结构框图;
图2是根据本发明实施例1的第一个方面所述的文件上传方法200的流程图;
图3是根据本发明实施例2所述的文件上传装置300的结构示意图;
图4是根据本发明实施例3所述的文件上传装置400的结构示意图。
具体实施方式
下面,将参考附图详细地描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。
应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
本领域技术人员可以理解,本发明实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本发明实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本发明实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本发明中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本发明中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本发明对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本发明实施例可以应用于终端设备、计算机***、服务器等电子设备,其可与众多其它通用或专用计算***环境或配置一起操作。适于与终端设备、计算机***、服务器等电子设备一起使用的众所周知的终端设备、计算***、环境和/或配置的例子包括但不限于:个人计算机***、服务器计算机***、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的***、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机***﹑大型计算机***和包括上述任何***的分布式云计算技术环境,等等。
终端设备、计算机***、服务器等电子设备可以在由计算机***执行的计算机***可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机***/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算***存储介质上。
实施例1
根据本实施例,提供了一种文件上传方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现文件上传方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于GPU、微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本发明实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的文件上传方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的文件上传方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图1所示的计算机设备(或移动设备)可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图1仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机设备(或移动设备)中的部件的类型。
在上述运行环境下,根据本实施例的第一个方面,提供了一种文件上传方法。图2示出了该方法的流程示意图,参考图2所示,该方法包括:
步骤201,基于与目标待传文件相关联的上传标识判断所述目标待传文件是否存在上传记录,获取判断结果。
在本发明的实施例中,客户端在上传前需要在本地查看是否有过上传记录,如果没有记录就正常分片上传,如果有记录需要查看是否有没有上传完成的分片。在本发明的实施例中,通过上传标识判断文件是否为首次上传,若为首次上传,则不存在上传记录,需要进行文件分片,若非首次上传,则存在上传记录,直接确定未上传成功的分片数据并进行上传即可。其中,对于上传标识,其取值可以为0和1,0表示为首次上传,1表示为非首次上传。当需要进行目标待传文件的上传时,直接获取与目标待传文件相关联的上传标识,并基于上传标识进行判断,获取判断结果。
步骤202,当所述判断结果指示所述目标待传文件存在上传记录时,将所述上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,确定至少一个未上传成功的待传分片数据对应的第一数据标识。
步骤203,确定每个第一数据标识对应的第一待传分片数据。
在本发明的实施例中,对于上传成功的分片数据,在上传记录中都会有记录,因此,将上传记录中的标识数据和目标待传文件的所有分片数据对应的数据标识进行比对即可确定未上传成功的分片数据对应的数据标识,将此数据标识第一数据标识,再基于所述第一数据标识和数据标识与分片数据之间的关联关系即可确定与每个第一数据标识对应的第一待传分片数据。
可选地,其中所述方法还包括:
当所述判断结果指示所述目标待传文件存在上传记录时,基于所述目标待传文件的文件信息发送已上传成功的分片数据获取请求,并接收服务端基于所述分片数据获取请求返回的在服务端已上传成功的分片数据对应的数据标识;
将接收的在服务端已上传成功的分片数据对应的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,以确定未成功上传的第二数据标识;
对于任一个第二数据标识,当所述任一个第二数据标识不是第一数据标识时,将所述第二数据标识作为第一数据标识。
在本发明的实施例中,可能存在客户端确定的未上传成功的分片数据和服务端确定的未上传成功的分片数据不一致的情况。例如,对于任一个分片数据A,分片数据A在客户端显示已上传成功,但是服务端不存在分片数据A。此时,若不进行分片缺失检测,可能会导致在服务端分片数据A未上传,造成服务端没有分片数据A,以至于在上传结束后出现错误,从而需要重传。因此,还可以进行分片缺失检测。
具体地,客户端发送发送已上传成功的分片数据获取请求至服务端接口,以获取目标待传文件已经上传的分片数据的数据标识,然后客户端只需要根据已经上传的分片数据的数据标识和所有分片数据对应的数据标识进行比对,即可确定在服务端未上传成功的分片数据的第二数据标识。然后,再依次判断每个第二数据标识是否为第一数据标识,若第二数据标识不是第一数据标识,则将所述第二数据标识作为第一数据标识。对于任一个分片数据A,此操作能够使得假设分片数据A在客户端显示已上传成功,而服务端不存在分片数据A时,也能够将分片数据A重新进行上传,能够防止分片数据A不上传,造成服务端没有分片数据A以至于在上传结束后出现错误,并重传的情况发生,能够提高上传效率。
可选地,其中所述方法还包括:
当所述判断结果指示所述目标待传文件不存在上传记录时,按照预设分片规则对所述目标待传文件进行分片处理,获取至少一个第一待传分片数据,为每个第一待传分片数据分配唯一的数据标识,并更新与所述目标待传文件相关联的上传标识。
可选地,其中所述按照预设分片规则对所述目标待传文件进行分片处理,获取至少一个第一待传分片数据,包括:
若所述目标待传文件的大小小于第一预设阈值,则直接将所述目标待传文件作为第一待传分片数据;
若所述目标待传文件的大小大于等于所述第一预设阈值且小于等于第二预设阈值,则按照每个分片数据的大小为第一预设阈值进行分片,获取至少一个第一待传分片数据;
若所述目标待传文件的大小大于所述第二预设阈值,则按照预设分片数量进行分片,以获取预设分片数量的第一待传分片数据。
在本发明的实施例中,当基于所述判断结果确定不存在上传记录,即为首次上传时,对目标待传文件进行分片处理,得到第一待传分片数据,并按照顺序为每个第一待传分片数据分配一个唯一的数据标识。其中,根据数据标识的顺序进行分片数据的合成即可得到完整的目标待传文件。
在本发明的实施例中,根据目标待传文件的大小进行分片。例如,设置第一预设阈值为4M,第二预设阈值为1G,预设分片数量为256片。则如果文件大小小于4M时,不分片,直接上传;如果文件大小大于4M并且小于1G时,每片按照4M分片,最多分256片;如果文件大小大于1G时,按照文件大小总数平均分为256片。
步骤204,创建线程池,将每个第一数据标识和每个第一数据标识对应的第一待传分片数据发送至服务端,并接收服务端返回的与每个第一数据标识关联的上传成功标记。
在本发明的实施例中,在进行分片数据上传时,客户端创建一个线程池,最多10个线程共同存在,每次最多同时上传10片,保证服务器性能不至于同时占用太多。服务端会通过缓存机制保存这些信息,并返回客户端一个与数据标识关联的上传成功标记,以使得客户端基于上传成功标记判断是否上传成功。上传成功标记和上传标记类似,通过不同的属性值进行是否上传成功的判断。
步骤205,对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示上传成功时,基于所述任一个第一数据标识对所述上传记录进行更新。
可选地,其中所述方法还包括:
对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示未上传成功时,重新进行上传。
在本发明的实施例中,本地端根据接收到的上传成功标记判断是否成功,如果没有成功的话,按照没成功的分片数据的数据标识重新上传,成功了的话对上传记录中的信息进行更新,同时上传下一片文件。
步骤206,当更新后的上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识一致时,发送上传成功信息至服务端。
在本发明的实施例中,由本地端判断是否是最后一片上传成功,如果是,通过接口通知后台合成文件。具体地,当更新后的上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识一致时,发送上传成功信息至服务端。
可选地,其中所述方法还包括:
在所述服务端在接收到所述上传成功信息时,基于数据标识判断所有的分片数据是否均存在;
当确定所有的分片数据均存在时,对所有的分片数据进行md5校验,并当所有的分片数据均通过md5校验后,进行分片数据的合并,以获取所述目标待传文件,并返回上传成功信息至本地端;或当确定所有的分片数据均存在时,按照数据标识的顺序对在服务端已上传成功的分片数据进行合并,以获取合成文件,对所述合成文件进行md5校验,并当所述合成文件通过md5校验时,返回上传成功消息至本地端。
可选地,其中所述方法还包括:
当确定存在分片数据未通过md5校验时,服务端发送包含未通过md5校验的分片数据的数据标识的上传失败信息至本地端,以使得本地端基于所述上传失败信息重新进行未通过md5校验的分片数据的上传;
当所述合成文件未通过md5校验时,对所有的分片数据进行md5校验,并发送包含未通过md5校验的分片数据的数据标识的上传失败信息至本地端,以使得本地端基于所述上传失败信息重新进行未通过md5校验的分片数据的上传。
在本发明的实施例中,当服务端接收到上传成功消息后,进行分片数据的合成,将获取的所有的分片数据进行合成,以获取目标待传文件。其中,多个分片数据按顺序合成一个大文件,存储到服务器上。合并的时候,按照分片序号逐一检测其大小是否与记录中分片大小相同,如果相同就合并,如果不相同返回错误给客户端,等待后续的重传。
在本发明的实施例中,为了保证上传文件的准确性,需要进行md5校验。其中,可以先对分片数据进行md5校验,待校验通过后再进行合并;还可以直接进行合并,并对合并后的文件进行md5校验,若校验通过,则表示上传成功,若不通过,再分别对分片数据进行md5校验,以确定上传异常的分片数据,并返回送包含未通过md5校验的分片数据的数据标识的上传失败信息至本地端,以使得本地端基于所述上传失败信息重新进行未通过md5校验的分片数据的上传,待重新上传完成后再次进行合并。
正如前面背景技术中所述的,一旦资源文件过大(比如1G以上),则必须要考虑上传过程网络中断的情况。试想我们还是采用上述方案,一口气把这整个1G的资源文件上传到服务器,这显然是不现实的,考虑到网络使用中断或服务器上传异常...等场景,那么我们恢复网络后又得重新从头开始上传,那之前已经上传完成的部分资源岂不作废,这种耗时耗力的工作,显然是不符合常理的。
针对上述背景技术中存在的问题,为了解决大文件上传的存在如此鸡肋的问题,从而诞生了一个叫:分片上传(断点续上传)。分片上传(断点续上传)主要是为了保证在网络中断后1G的资源文件已上传的那部分在下次网络连接时不必再重传。所以本地在上传的时候,要将大文件进行切割分片,比如分成1024*1024B,即将大文件分成1M的片进行上传,服务器在接收后,再将这些片合并成原始文件,这就是分片的基本原理。断点续传要求本地要记录每一片的上传的状态,当网络中断,再次连接后,从断点处进行上传。服务器通过文件名、总片数判断该文件是否已全部上传完成。
本实施例通过基于与目标待传文件相关联的上传标识判断所述目标待传文件是否存在上传记录,获取判断结果;当所述判断结果指示所述目标待传文件存在上传记录时,将所述上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,确定至少一个未上传成功的待传分片数据对应的第一数据标识;确定每个第一数据标识对应的第一待传分片数据;创建线程池,将每个第一数据标识和每个第一数据标识对应的第一待传分片数据发送至服务端,并接收服务端返回的与每个第一数据标识关联的上传成功标记;对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示上传成功时,基于所述任一个第一数据标识对所述上传记录进行更新;当更新后的上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识一致时,发送上传成功信息至服务端。本发明的方法可以突破php或nginx上传大小限制,可以使用异步或多线程上传来提高上传速度,在javascript中可以使用xmlhttprequest进行异步上传,在PHP中可以使用协程库GuzzleHttp进行并发上传,其它语言也可以使用多线程的方式上传,还可以开多个浏览器上传,多个同时一块传都可以;能够实现断线重传,如果在上传过程中,网络中断,可以在网络恢复后以块大小为单位,进行重传,已经上传的成功的分片就不需要再次上传;以本地端进行上传的记录,这可以减少服务端工作量,这样服务器的资源可以应用于其他更重要的地方。
本发明的方法能够在大文件的场景当中,并且对于网络不好的地方,比如使用移动网在地铁,隧道等地方,能起到很好的效果。比如视频上传,高清音频上传有很好的容错性,节省时间和流量。同时具有以下优点:(1)应用场景广泛。步入移动互联网时代后,移动端进入高速发展,移动端的上传功能有着广泛的应用,特别是特殊行业,比如银行,信托这些行业,会有大量监管需求进行录音录像上传,这种情况下会比较适用的。对于网络要求不高。不像传统的上传,对于网络性能要求较高,传统上传一旦网络性能不好时导致上传失败,再次上传时必须从头重新上传,而采用新方案时对于网络要求不高,失败重传时只需要从失败的分片开始上传就可以。
此外,参考图1所示,根据本实施例的第二个方面,提供了一种存储介质104。存储介质104包括存储的程序,其中,在程序运行时由处理器执行以上任意一项所述的方法。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
图3示出了根据本实施例所述的文件上传装置300,该装置300与根据实施例1的第一个方面所述的方法相对应。参考图3所示,该装置300包括:
判断模块301,用于基于与目标待传文件相关联的上传标识判断所述目标待传文件是否存在上传记录,获取判断结果;
第一数据标识确定模块302,用于当所述判断结果指示所述目标待传文件存在上传记录时,将所述上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,确定至少一个未上传成功的待传分片数据对应的第一数据标识;
第一待传分片数据确定模块303,用于确定每个第一数据标识对应的第一待传分片数据;
上传模块304,用于创建线程池,将每个第一数据标识和每个第一数据标识对应的第一待传分片数据发送至服务端,并接收服务端返回的与每个第一数据标识关联的上传成功标记;
上传记录更新模块305,用于对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示上传成功时,基于所述任一个第一数据标识对所述上传记录进行更新;
消息反馈模块306,用于当更新后的上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识一致时,发送上传成功信息至服务端。
可选地,其中所述装置还包括:
分片模块,用于当所述判断结果指示所述目标待传文件不存在上传记录时,按照预设分片规则对所述目标待传文件进行分片处理,获取至少一个第一待传分片数据,为每个第一待传分片数据分配唯一的数据标识,并更新与所述目标待传文件相关联的上传标识。
可选地,其中所述分片模块,按照预设分片规则对所述目标待传文件进行分片处理,获取至少一个第一待传分片数据,包括:
若所述目标待传文件的大小小于第一预设阈值,则直接将所述目标待传文件作为第一待传分片数据;
若所述目标待传文件的大小大于等于所述第一预设阈值且小于等于第二预设阈值,则按照每个分片数据的大小为第一预设阈值进行分片,获取至少一个第一待传分片数据;
若所述目标待传文件的大小大于所述第二预设阈值,则按照预设分片数量进行分片,以获取预设分片数量的第一待传分片数据。
可选地,其中所述第一数据标识确定模块,还包括:
当所述判断结果指示所述目标待传文件存在上传记录时,基于所述目标待传文件的文件信息发送已上传成功的分片数据获取请求,并接收服务端基于所述分片数据获取请求返回的在服务端已上传成功的分片数据对应的数据标识;
将接收的在服务端已上传成功的分片数据对应的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,以确定未成功上传的第二数据标识;
对于任一个第二数据标识,当所述任一个第二数据标识不是第一数据标识时,将所述第二数据标识作为第一数据标识。
可选地,其中所述上传模块,还用于:
对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示未上传成功时,重新进行上传。
可选地,其中所述装置还包括:校验模块,用于:
在所述服务端在接收到所述上传成功信息时,基于数据标识判断所有的分片数据是否均存在;
当确定所有的分片数据均存在时,对所有的分片数据进行md5校验,并当所有的分片数据均通过md5校验后,进行分片数据的合并,以获取所述目标待传文件,并返回上传成功信息至本地端;或当确定所有的分片数据均存在时,按照数据标识的顺序对在服务端已上传成功的分片数据进行合并,以获取合成文件,对所述合成文件进行md5校验,并当所述合成文件通过md5校验时,返回上传成功消息至本地端。
可选地,其中所述校验模块,还用于:
当确定存在分片数据未通过md5校验时,服务端发送包含未通过md5校验的分片数据的数据标识的上传失败信息至本地端,以使得本地端基于所述上传失败信息重新进行未通过md5校验的分片数据的上传;
当所述合成文件未通过md5校验时,对所有的分片数据进行md5校验,并发送包含未通过md5校验的分片数据的数据标识的上传失败信息至本地端,以使得本地端基于所述上传失败信息重新进行未通过md5校验的分片数据的上传。
从而根据本实施例,可以基于与目标待传文件相关联的上传标识判断所述目标待传文件是否存在上传记录,获取判断结果;当所述判断结果指示所述目标待传文件存在上传记录时,将所述上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,确定至少一个未上传成功的待传分片数据对应的第一数据标识;确定每个第一数据标识对应的第一待传分片数据;创建线程池,将每个第一数据标识和每个第一数据标识对应的第一待传分片数据发送至服务端,并接收服务端返回的与每个第一数据标识关联的上传成功标记;对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示上传成功时,基于所述任一个第一数据标识对所述上传记录进行更新;当更新后的上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识一致时,发送上传成功信息至服务端。本发明的方法可以突破php或nginx上传大小限制,可以使用异步或多线程上传来提高上传速度,在javascript中可以使用xmlhttprequest进行异步上传,在PHP中可以使用协程库GuzzleHttp进行并发上传,其它语言也可以使用多线程的方式上传,还可以开多个浏览器上传,多个同时一块传都可以;能够实现断线重传,如果在上传过程中,网络中断,可以在网络恢复后以块大小为单位,进行重传,已经上传的成功的分片就不需要再次上传;以本地端进行上传的记录,这可以减少服务端工作量,这样服务器的资源可以应用于其他更重要的地方。
实施例3
图4示出了根据本实施例所述的文件上传装置400,该装置400与根据实施例1的第一个方面所述的方法相对应。参考图4所示,该装置400包括:处理器410;以及存储器420,与处理器410连接,用于为处理器410提供处理以下处理步骤的指令:
基于与目标待传文件相关联的上传标识判断所述目标待传文件是否存在上传记录,获取判断结果;
当所述判断结果指示所述目标待传文件存在上传记录时,将所述上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,确定至少一个未上传成功的待传分片数据对应的第一数据标识;
确定每个第一数据标识对应的第一待传分片数据;
创建线程池,将每个第一数据标识和每个第一数据标识对应的第一待传分片数据发送至服务端,并接收服务端返回的与每个第一数据标识关联的上传成功标记;
对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示上传成功时,基于所述任一个第一数据标识对所述上传记录进行更新;
当更新后的上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识一致时,发送上传成功信息至服务端。
可选地,其中所述方法还包括:
当所述判断结果指示所述目标待传文件不存在上传记录时,按照预设分片规则对所述目标待传文件进行分片处理,获取至少一个第一待传分片数据,为每个第一待传分片数据分配唯一的数据标识,并更新与所述目标待传文件相关联的上传标识。
可选地,其中所述按照预设分片规则对所述目标待传文件进行分片处理,获取至少一个第一待传分片数据,包括:
若所述目标待传文件的大小小于第一预设阈值,则直接将所述目标待传文件作为第一待传分片数据;
若所述目标待传文件的大小大于等于所述第一预设阈值且小于等于第二预设阈值,则按照每个分片数据的大小为第一预设阈值进行分片,获取至少一个第一待传分片数据;
若所述目标待传文件的大小大于所述第二预设阈值,则按照预设分片数量进行分片,以获取预设分片数量的第一待传分片数据。
可选地,其中所述方法还包括:
当所述判断结果指示所述目标待传文件存在上传记录时,基于所述目标待传文件的文件信息发送已上传成功的分片数据获取请求,并接收服务端基于所述分片数据获取请求返回的在服务端已上传成功的分片数据对应的数据标识;
将接收的在服务端已上传成功的分片数据对应的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,以确定未成功上传的第二数据标识;
对于任一个第二数据标识,当所述任一个第二数据标识不是第一数据标识时,将所述第二数据标识作为第一数据标识。
可选地,其中所述方法还包括:
对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示未上传成功时,重新进行上传。
可选地,其中所述方法还包括:
在所述服务端在接收到所述上传成功信息时,基于数据标识判断所有的分片数据是否均存在;
当确定所有的分片数据均存在时,对所有的分片数据进行md5校验,并当所有的分片数据均通过md5校验后,进行分片数据的合并,以获取所述目标待传文件,并返回上传成功信息至本地端;或当确定所有的分片数据均存在时,按照数据标识的顺序对在服务端已上传成功的分片数据进行合并,以获取合成文件,对所述合成文件进行md5校验,并当所述合成文件通过md5校验时,返回上传成功消息至本地端。
可选地,其中所述方法还包括:
当确定存在分片数据未通过md5校验时,服务端发送包含未通过md5校验的分片数据的数据标识的上传失败信息至本地端,以使得本地端基于所述上传失败信息重新进行未通过md5校验的分片数据的上传;
当所述合成文件未通过md5校验时,对所有的分片数据进行md5校验,并发送包含未通过md5校验的分片数据的数据标识的上传失败信息至本地端,以使得本地端基于所述上传失败信息重新进行未通过md5校验的分片数据的上传。
从而根据本实施例,可以基于与目标待传文件相关联的上传标识判断所述目标待传文件是否存在上传记录,获取判断结果;当所述判断结果指示所述目标待传文件存在上传记录时,将所述上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,确定至少一个未上传成功的待传分片数据对应的第一数据标识;确定每个第一数据标识对应的第一待传分片数据;创建线程池,将每个第一数据标识和每个第一数据标识对应的第一待传分片数据发送至服务端,并接收服务端返回的与每个第一数据标识关联的上传成功标记;对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示上传成功时,基于所述任一个第一数据标识对所述上传记录进行更新;当更新后的上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识一致时,发送上传成功信息至服务端。本发明的方法可以突破php或nginx上传大小限制,可以使用异步或多线程上传来提高上传速度,在javascript中可以使用xmlhttprequest进行异步上传,在PHP中可以使用协程库GuzzleHttp进行并发上传,其它语言也可以使用多线程的方式上传,还可以开多个浏览器上传,多个同时一块传都可以;能够实现断线重传,如果在上传过程中,网络中断,可以在网络恢复后以块大小为单位,进行重传,已经上传的成功的分片就不需要再次上传;以本地端进行上传的记录,这可以减少服务端工作量,这样服务器的资源可以应用于其他更重要的地方。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种文件上传方法,其特征在于,所述方法包括:
基于与目标待传文件相关联的上传标识判断所述目标待传文件是否存在上传记录,获取判断结果;
当所述判断结果指示所述目标待传文件存在上传记录时,将所述上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,确定至少一个未上传成功的待传分片数据对应的第一数据标识;
确定每个第一数据标识对应的第一待传分片数据;
创建线程池,将每个第一数据标识和每个第一数据标识对应的第一待传分片数据发送至服务端,并接收服务端返回的与每个第一数据标识关联的上传成功标记;
对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示上传成功时,基于所述任一个第一数据标识对所述上传记录进行更新;
当更新后的上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识一致时,发送上传成功信息至服务端。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述判断结果指示所述目标待传文件不存在上传记录时,按照预设分片规则对所述目标待传文件进行分片处理,获取至少一个第一待传分片数据,为每个第一待传分片数据分配唯一的数据标识,并更新与所述目标待传文件相关联的上传标识。
3.根据权利要求2所述的方法,其特征在于,所述按照预设分片规则对所述目标待传文件进行分片处理,获取至少一个第一待传分片数据,包括:
若所述目标待传文件的大小小于第一预设阈值,则直接将所述目标待传文件作为第一待传分片数据;
若所述目标待传文件的大小大于等于所述第一预设阈值且小于等于第二预设阈值,则按照每个分片数据的大小为第一预设阈值进行分片,获取至少一个第一待传分片数据;
若所述目标待传文件的大小大于所述第二预设阈值,则按照预设分片数量进行分片,以获取预设分片数量的第一待传分片数据。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述判断结果指示所述目标待传文件存在上传记录时,基于所述目标待传文件的文件信息发送已上传成功的分片数据获取请求,并接收服务端基于所述分片数据获取请求返回的在服务端已上传成功的分片数据对应的数据标识;
将接收的在服务端已上传成功的分片数据对应的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,以确定未成功上传的第二数据标识;
对于任一个第二数据标识,当所述任一个第二数据标识不是第一数据标识时,将所述第二数据标识作为第一数据标识。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示未上传成功时,重新进行上传。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述服务端在接收到所述上传成功信息时,基于数据标识判断所有的分片数据是否均存在;
当确定所有的分片数据均存在时,对所有的分片数据进行md5校验,并当所有的分片数据均通过md5校验后,进行分片数据的合并,以获取所述目标待传文件,并返回上传成功信息至本地端;或当确定所有的分片数据均存在时,按照数据标识的顺序对在服务端已上传成功的分片数据进行合并,以获取合成文件,对所述合成文件进行md5校验,并当所述合成文件通过md5校验时,返回上传成功消息至本地端。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当确定存在分片数据未通过md5校验时,服务端发送包含未通过md5校验的分片数据的数据标识的上传失败信息至本地端,以使得本地端基于所述上传失败信息重新进行未通过md5校验的分片数据的上传;
当所述合成文件未通过md5校验时,对所有的分片数据进行md5校验,并发送包含未通过md5校验的分片数据的数据标识的上传失败信息至本地端,以使得本地端基于所述上传失败信息重新进行未通过md5校验的分片数据的上传。
8.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时由处理器执行权利要求1至7中任意一项所述的方法。
9.一种文件上传装置,其特征在于,所述装置包括:
判断模块,用于基于与目标待传文件相关联的上传标识判断所述目标待传文件是否存在上传记录,获取判断结果;
第一数据标识确定模块,用于当所述判断结果指示所述目标待传文件存在上传记录时,将所述上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,确定至少一个未上传成功的待传分片数据对应的第一数据标识;
第一待传分片数据确定模块,用于确定每个第一数据标识对应的第一待传分片数据;
上传模块,用于创建线程池,将每个第一数据标识和每个第一数据标识对应的第一待传分片数据发送至服务端,并接收服务端返回的与每个第一数据标识关联的上传成功标记;
上传记录更新模块,用于对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示上传成功时,基于所述任一个第一数据标识对所述上传记录进行更新;
消息反馈模块,用于当更新后的上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识一致时,发送上传成功信息至服务端。
10.一种文件上传装置,其特征在于,所述装置包括:
处理器;以及
存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:
基于与目标待传文件相关联的上传标识判断所述目标待传文件是否存在上传记录,获取判断结果;
当所述判断结果指示所述目标待传文件存在上传记录时,将所述上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识进行比对,确定至少一个未上传成功的待传分片数据对应的第一数据标识;
确定每个第一数据标识对应的第一待传分片数据;
创建线程池,将每个第一数据标识和每个第一数据标识对应的第一待传分片数据发送至服务端,并接收服务端返回的与每个第一数据标识关联的上传成功标记;
对于任一个第一数据标识,当与所述任一个第一数据标识关联的上传成功标记指示上传成功时,基于所述任一个第一数据标识对所述上传记录进行更新;
当更新后的上传记录中已上传成功的分片数据的数据标识和所述目标待传文件的所有分片数据对应的数据标识一致时,发送上传成功信息至服务端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211468648.2A CN115865895A (zh) | 2022-11-22 | 2022-11-22 | 一种文件上传方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211468648.2A CN115865895A (zh) | 2022-11-22 | 2022-11-22 | 一种文件上传方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115865895A true CN115865895A (zh) | 2023-03-28 |
Family
ID=85665039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211468648.2A Pending CN115865895A (zh) | 2022-11-22 | 2022-11-22 | 一种文件上传方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115865895A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116032913A (zh) * | 2022-10-12 | 2023-04-28 | 浪潮云信息技术股份公司 | 基于分布式对象存储的文件上传方法及*** |
-
2022
- 2022-11-22 CN CN202211468648.2A patent/CN115865895A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116032913A (zh) * | 2022-10-12 | 2023-04-28 | 浪潮云信息技术股份公司 | 基于分布式对象存储的文件上传方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111414334B (zh) | 基于云技术的文件分片上传方法、装置、设备及存储介质 | |
CN113568884B (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
CN105897888B (zh) | 一种客户端连接方法及*** | |
CN110826799B (zh) | 业务预测方法、装置、服务器及可读存储介质 | |
CN110650164B (zh) | 文件的上传方法、装置、终端以及计算机存储介质 | |
CN104182294A (zh) | 一种文件备份、文件恢复方法及装置 | |
CN107347062A (zh) | 一种日志数据处理的方法、电子设备和可读存储介质 | |
CN112822260B (zh) | 文件传输方法及装置、电子设备、存储介质 | |
CN112839003A (zh) | 数据校验方法及*** | |
CN109214855B (zh) | 素材接收方法、装置及*** | |
CN104615598A (zh) | 元数据服务器的迁移处理方法及装置 | |
CN114124929A (zh) | 跨网络的数据处理方法和装置 | |
CN113273163A (zh) | 文件上传方法、文件下载方法和文件管理装置 | |
CN115865895A (zh) | 一种文件上传方法、装置及存储介质 | |
CN111756818B (zh) | 一种文件传送方法、装置、设备及存储介质 | |
CN112087475B (zh) | 一种云平台组件应用的消息推送方法、装置及消息服务器 | |
CN109600423B (zh) | 数据同步方法、装置、电子设备及存储介质 | |
CN112732702B (zh) | 数据库引擎文件处理方法及装置 | |
CN111008053A (zh) | 一种虚拟桌面的自动同步方法及装置 | |
US10949645B2 (en) | Method, apparatus, and storage medium for data verification | |
CN112969198A (zh) | 数据传输方法、终端及存储介质 | |
CN110585724B (zh) | 游戏客户端中的表格数据更新方法、装置 | |
CN110990360A (zh) | 基于网络存储设备的文件同步方法及相关组件 | |
CN114615325A (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 |