CN113726842B - 一种文件上传方法和装置、电子设备及存储介质 - Google Patents

一种文件上传方法和装置、电子设备及存储介质 Download PDF

Info

Publication number
CN113726842B
CN113726842B CN202110778008.0A CN202110778008A CN113726842B CN 113726842 B CN113726842 B CN 113726842B CN 202110778008 A CN202110778008 A CN 202110778008A CN 113726842 B CN113726842 B CN 113726842B
Authority
CN
China
Prior art keywords
file
uploaded
uploading
fragment data
linked list
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
CN202110778008.0A
Other languages
English (en)
Other versions
CN113726842A (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.)
Seashell Housing Beijing Technology Co Ltd
Original Assignee
Seashell Housing Beijing 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 Seashell Housing Beijing Technology Co Ltd filed Critical Seashell Housing Beijing Technology Co Ltd
Priority to CN202110778008.0A priority Critical patent/CN113726842B/zh
Publication of CN113726842A publication Critical patent/CN113726842A/zh
Application granted granted Critical
Publication of CN113726842B publication Critical patent/CN113726842B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9015Buffering arrangements for supporting a linked list

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明提供一种文件上传方法和装置、电子设备及存储介质,该方法包括:接收上传文件指令;遍历文件双向链表,确定待上传文件对应的代理对象;其中,所述文件双向链表包括多个依次通过双向指针链接的代理对象,所述代理对象包括对应文件的状态数据和分片数据;根据待上传文件的状态数据,将待上传文件对应的分片数据发送至服务器。本发明使用双向链表结构对所有待处理文件进行集中统一调度和管理,实现多文件的简便并行处理,使分片上传过程不再需要依赖发布订阅模式并可以对上传状态实时监管,使文件处理流程不丢失,为重试和断点续传做好准备,实现文件上传的高效、稳定,同时提升用户体验。

Description

一种文件上传方法和装置、电子设备及存储介质
技术领域
本发明涉及互联网技术领域,尤其涉及一种文件上传方法和装置、电子设备及存储介质。
背景技术
目前,由前端页面上传的视频、图片通常是不超过20M的小文件,不分片直接上传即可。对于数据量较大的文件,采用分片上传的方式。大文件上传往往会出现上传中断的情形,为了实现断点续传,通常采用事件模型进行订阅发布,实时监管文件分片处理情况,使文件处理流程不丢失。
其中,不分片直接上传适用于数据量较小的文件,但是随着文件数据的增加,上传时间变长,加之网络环境存在不稳定性,加大了文件上传失败的概率,所以上传大文件通常采用分片上传方式。利用订阅发布模式实现文件断点续传的方式下,所用事件模型分为事件监听、事件触发并处理回调、事件销毁,这三部分常常独立存在于不同文件中,如果管理不当会造成浏览器内存泄漏的问题,而且处理过程也比较繁琐,无法实现稳定、高效地多文件并行处理。
发明内容
本发明提供一种文件上传方法和装置,用以解决现有技术监管文件处理流程的过程繁琐,以及因管理不当造成内存泄漏的问题,实现文件上传的高效、稳定,同时提升用户体验。
本发明提供一种文件上传方法,包括:
接收上传文件指令;
遍历文件双向链表,确定待上传文件对应的代理对象;其中,所述文件双向链表包括多个依次通过双向指针链接的代理对象,所述代理对象包括对应文件的状态数据和分片数据;
根据所述待上传文件的状态数据,将所述待上传文件对应的分片数据发送至服务器。
根据本发明提供的一种文件上传方法,所述方法还包括:在接收上传文件指令的情况下,若接收到新增文件,生成所述新增文件的代理对象;
根据所述状态数据判断所述文件双向链表中是否存在中止文件;
若是,将所述新增文件的代理对象添加至首个中止文件之前;
若否,将所述新增文件的代理对象添加至文件双向链表的尾部。
根据本发明提供的一种文件上传方法,所述状态数据包括:待处理分片队列、成功队列、失败队列、分片总数、中止标识符和文件唯一标识符;
根据所述待上传文件的状态数据,将所述待上传文件对应的分片数据发送至服务器,包括:
根据所述待上传文件的状态数据,确定所述待上传文件的状态;
若所述待上传文件的状态为中止状态,停止访问后续的代理对象;
若所述待上传文件的状态为非中止状态,且所述待上传文件的分片总数为1,直接将所述待上传文件对应的分片数据上传至服务器,若上传成功,将所述分片数据存储至所述代理对象的成功队列,若上传失败,将所述分片数据存储至所述代理对象的失败队列;
若所述待上传文件的状态为非中止状态,且所述待上传文件的分片总数大于1,且文件唯一标识符为空,将所述待上传文件的状态设置为锁定状态,继续访问下一个待上传文件的代理对象;
若所述待上传文件的状态为非中止状态,且所述待上传文件的分片总数大于1,且存在文件唯一标识符,根据资源池能力将所述待上传文件对应的分片数据发送至服务器。
根据本发明提供的一种文件上传方法,所述根据资源池能力将所述待上传文件对应的分片数据发送至服务器,包括:
判断所述待上传文件对应的待处理分片数量是否小于可用资源池能力;
若是,将所述待上传文件对应的分片数据逐一上传至服务器,若上传成功,将所述分片数据存储至所述代理对象的成功队列,若上传失败,将所述分片数据存储至所述代理对象的失败队列;
若否,根据当前的可用资源池能力,将所述待上传文件对应的分片数据通过可用资源池上传至服务器,若上传成功,将所述分片数据存储至所述代理对象的成功队列,若上传失败,将所述分片数据存储至所述代理对象的失败队列。
根据本发明提供的一种文件上传方法,所述方法还包括:
在所述待上传文件对应的分片数据上传结束后,根据所述待上传文件的成功队列判断所述待上传文件对应的分片数据均上传成功的情况下,删除所述待上传文件。
根据本发明提供的一种文件上传方法,所述方法还包括:
接收目标文件的中止指令;
从所述文件双向链表头部向后查找所述目标文件对应的代理对象;
将所述代理对象的所述中止标识符修改为true,将所述代理对象从当前位置移出并插入至所述文件双向链表的尾部。
根据本发明提供的一种文件上传方法,所述方法还包括:
接收目标文件的重试指令;
在所述文件双向链表中找到所述目标文件对应的代理对象;
将所述代理对象失败队列中的分片数据逐一拷贝至待处理分片队列,并将所述代理对象从当前位置移出并插入至所述文件双向链表头部。
本发明还提供一种文件上传装置,包括:
接收外部指令模块,用于接收上传文件指令;
遍历文件链表模块,用于遍历文件双向链表,确定待上传文件对应的代理对象;其中,所述文件双向链表包括多个依次通过双向指针链接的代理对象,所述代理对象包括对应文件的状态数据和分片数据;
发送分片数据模块,用于根据所述待上传文件的状态数据,将所述待上传文件对应的分片数据发送至服务器。
根据本发明提供的一种文件上传装置,所述遍历文件链表模块还用于:
在接收上传文件指令的情况下,若接收到新增文件,生成所述新增文件的代理对象;
根据所述状态数据判断所述文件双向链表中是否存在中止文件;
若是,将所述新增文件的代理对象添加至首个中止文件之前;
若否,将所述新增文件的代理对象添加至文件双向链表的尾部。
根据本发明提供的一种文件上传装置,所述状态数据包括:待处理分片队列、成功队列、失败队列、分片总数、中止标识符和文件唯一标识符;
所述发送分片数据模块还用于:
根据所述待上传文件的状态数据,确定所述待上传文件的状态;
若所述待上传文件的状态为中止状态,停止访问后续的代理对象;
若所述待上传文件的状态为非中止状态,且所述待上传文件的分片总数为1,直接将所述待上传文件对应的分片数据上传至服务器,若上传成功,将所述分片数据存储至所述代理对象的成功队列,若上传失败,将所述分片数据存储至所述代理对象的失败队列;
若所述待上传文件的状态为非中止状态,且所述待上传文件的分片总数大于1,且文件唯一标识符为空,将所述待上传文件的状态设置为锁定状态,继续访问下一个待上传文件的代理对象;
若所述待上传文件的状态为非中止状态,且所述待上传文件的分片总数大于1,且存在文件唯一标识符,根据资源池能力将所述待上传文件对应的分片数据发送至服务器。
根据本发明提供的一种文件上传装置,所述发送分片数据模块还用于:
判断所述待上传文件对应的待处理分片数量是否小于可用资源池能力;
若是,将所述待上传文件对应的分片数据逐一上传至服务器,若上传成功,将所述分片数据存储至所述代理对象的成功队列,若上传失败,将所述分片数据存储至所述代理对象的失败队列;
若否,根据当前的可用资源池能力,将所述待上传文件对应的分片数据通过可用资源池上传至服务器,若上传成功,将所述分片数据存储至所述代理对象的成功队列,若上传失败,将所述分片数据存储至所述代理对象的失败队列。
根据本发明提供的一种文件上传装置,所述遍历文件链表模块还用于:
在所述待上传文件对应的分片数据上传结束后,根据所述待上传文件的成功队列判断所述待上传文件对应的分片数据均上传成功的情况下,删除所述待上传文件。
根据本发明提供的一种文件上传装置,所述遍历文件链表模块还用于:
接收目标文件的中止指令;
从所述文件双向链表头部向后查找所述目标文件对应的代理对象;
将所述代理对象的所述中止标识符修改为true,将所述代理对象从当前位置移出并插入至所述文件双向链表的尾部。
根据本发明提供的一种文件上传装置,所述遍历文件链表模块还用于:
接收目标文件的重试指令;
在所述文件双向链表中找到所述目标文件对应的代理对象;
将所述代理对象失败队列中的分片数据逐一拷贝至待处理分片队列,并将所述代理对象从当前位置移出并插入至所述文件双向链表头部。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述文件上传方法的步骤。
本发明还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如上述任一种所述文件上传方法的步骤。
本发明提供的文件上传方法和装置,通过接收上传文件指令,遍历文件双向链表,确定待上传文件对应的代理对象,然后根据待上传文件的状态数据,将待上传文件对应的分片数据发送至服务器。该方法使用双向链表结构对所有待处理文件进行集中统一调度和管理,实现多文件的简便并行处理,使分片上传过程不再需要依赖发布订阅模式并可以对上传状态实时监管,使文件处理流程不丢失,为重试和断点续传做好准备,实现文件上传的高效、稳定,同时提升用户体验。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的文件上传方法的流程示意图;
图2是本发明实施例提供的文件存储结构示意图;
图3是本发明实施例提供的分片数据发送至服务器的流程示意图;
图4是本发明实施例提供的根据资源池能力将分片数据发送至服务器的流程示意图;
图5是本发明实施例提供的接收新增文件的处理流程示意图;
图6是本发明实施例提供的接收中止指令的处理流程示意图;
图7是本发明实施例提供的接收唤起指令的处理流程示意图;
图8是本发明实施例提供的接收删除指令的处理流程示意图;
图9是本发明实施例提供的接收重试指令的处理流程示意图;
图10是本发明实施例提供的文件上传装置的结构示意图;
图11是本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的文件上传方法的流程示意图,如图1所示,该方法包括:
步骤110,接收上传文件指令。
步骤120,遍历文件双向链表,确定待上传文件对应的代理对象;其中,所述文件双向链表包括多个依次通过双向指针链接的代理对象,所述代理对象包括对应文件的状态数据和分片数据。
本发明为每一个待上传文件生成对应的代理对象,用于记录每一个文件分片的处理结果、文件处理进度、文件中断标识等信息。通过使用双向链表结构对所有待处理文件进行集中统一调度和管理,实现多文件的简便并行处理,使分片上传过程不再需要依赖发布订阅模式并可以对上传状态实时监管,使文件处理流程不丢失,为重试和断点续传做好准备。
根据本发明的一个实施例,图2为文件存储结构示意图,如图2所示,用双向链表将所有文件的代理对象串联起来。每个代理对象存储文件的状态数据和分片数据,其中状态数据具体包括:分片总数、待处理分片队列、成功队列、失败队列、中止标识符、文件唯一标识等。其中,分片总数记录文件的分片数量,待处理分片队列存储文件所有待上传分片数据,成功队列存储文件中已上传成功的分片数据,失败队列存储文件中上传失败的分片数据,中止标识符记录当前分片是否属于已被中止上传状态,文件唯一标识用于区分不同文件,每个文件分片上传均要携带该标识。
步骤130,根据所述待上传文件的状态数据,将所述待上传文件对应的分片数据发送至服务器。
根据本发明的一个实施例,图3为分片数据发送至服务器的流程示意图,如图3所示,根据待上传文件的状态数据,将待上传文件对应的分片数据发送至服务器的过程包括:
步骤310,根据所述待上传文件的状态数据,确定所述待上传文件的状态。
步骤320,判断待上传文件是否为中止状态,若是,执行步骤330;若否,执行步骤340。
步骤330,停止访问后续的代理对象。
具体来说,若待上传文件的中止标识符为true,表示当前文件已停止上传。由于所有中止文件均放在文件链表尾部,所以中止文件的后续文件也都是中止状态,不需要继续处理。
步骤340,判断待上传文件的分片总数是否为1,若是,执行步骤350,若否,执行步骤360。
步骤350,直接将所述待上传文件对应的分片数据上传至服务器,若上传成功,将所述分片数据存储至所述代理对象的成功队列,若上传失败,将所述分片数据存储至所述代理对象的失败队列。
具体来说,若当前待上传文件未被中止,同时由于文件数据量较小,不需要分片即可直接上传。需要说明的是,本发明的处理对象主要为需要分片上传的大文件,但是对于小文件,也适用本发明,需要同样生成代理对象链接于包含所有待上传文件的文件链表,只是所有小文件的分片总数均为1且各类队列长度最长情况下均为1。
步骤360,判断文件唯一标识是否为空,若是,执行步骤370,若否,执行步骤380。
步骤370,将所述待上传文件的状态设置为锁定状态,继续访问下一个待上传文件的代理对象。
文件唯一标识符用来标识分片所属的文件,每个分片上传都要带上该标识,所以对于未取得唯一标识的文件,不能发送其拥有的任一分片。
步骤380,根据资源池能力将所述待上传文件对应的分片数据发送至服务器。
对于已经取得文件唯一标识的大文件,可以适应当前资源池能力上传文件的部分分片数据。其中,资源池能力是指向服务器发送XHR请求(XMLHttpRequest)的通道数量。通常浏览器对相同域名同时处理的XHR请求有上限,不同浏览器的请求上限不同。
根据本发明的一个实施例,可以灵活配置资源池能力。
通常情况下,大文件分片上传或大规模上传文件时,会阻塞页面流程。浏览器对相同域名同时可以处理的XHR请求有上限,如果一次性将所有上传请求发出,会出现浏览器相同域名下的请求处理能力被上传文件的请求占满的情况,导致页面不能及时响应需要异步数据的用户操作,给用户的使用造成了极大不便。本发明通过配置资源池能力,可以实现请求限流,即在同一时间段内请求数量较多时,不占满浏览器相同域名的请求处理能力,保留六分之一的请求处理能力应对需要异步数据的用户操作,在没有此类用户操作时,可以取消预留的请求处理能力,将全部资源用于处理文件上传任务。进一步地,由于正在上传的文件分片会占用资源池能力中的部分通道,导致其他待上传文件无法使用全部发送通道,而只能利用可用资源池能力上传其部分文件分片,其中,可用资源池能力是指分片上传过程中,由于被占用请求发送通道而使初始资源池能力减少至当前的剩余可用通道数量。
根据本发明的一个实施例,图4为根据资源池能力将分片数据发送至服务器的流程示意图,如图4所示,包括:
步骤410,判断所述待上传文件对应的待处理分片数量是否小于可用资源池能力;若是,执行步骤420,若否,执行步骤430。
步骤420,将所述待上传文件对应的分片数据逐一上传至服务器,若上传成功,将所述分片数据存储至所述代理对象的成功队列,若上传失败,将所述分片数据存储至所述代理对象的失败队列。
步骤430,根据当前的可用资源池能力,将所述待上传文件对应的分片数据通过可用资源池上传至服务器,若上传成功,将所述分片数据存储至所述代理对象的成功队列,若上传失败,将所述分片数据存储至所述代理对象的失败队列。
具体地,在待上传文件的分片上传请求未占满当前的可用资源池能力的情况下,可以将待上传文件的分片数据全部上传,同时更新当前可用资源池能力。发送分片上传的XHR请求后,接收服务器响应,若上传分片成功,将分片数据存储至对应代理对象的成功队列,若上传分片失败,将分片数据存储至对应代理对象的失败队列。对于待上传文件的分片上传请求数量超过当前的可用资源池能力的情况下,只能上传与当前可用资源能力相当的分片数据,若上传成功,将所述分片数据存储至所述代理对象的成功队列,若上传失败,将所述分片数据存储至所述代理对象的失败队列。综上所述,本发明提供的文件上传方法通过接收上传文件指令,遍历文件双向链表,确定待上传文件对应的代理对象,然后根据待上传文件的状态数据,将待上传文件对应的分片数据发送至服务器。该方法使用代理代替发布订阅模式,以监控文件分片的处理,实现文件上传的高效、稳定,同时提升用户体验。
根据本发明的一个实施例,在接收上传文件指令的情况下,若接收到新增文件,则执行如图5所示的步骤:
步骤510,生成所述新增文件的代理对象。
具体来说,首先,接收新增文件,对文件类型、文件大小等信息进行校验,按照一定规则对新增文件分片,分片数量通常在10000个以内,每个分片大小在10M以内。根据文件分片信息生成新增文件的代理对象,每个代理对象存储文件的状态数据和分片数据,其中状态数据具体包括:分片总数、待处理分片队列、成功队列、失败队列、中止标识符、文件唯一标识等。其中,分片总数记录文件的分片数量,待处理分片队列存储文件所有待上传分片数据,成功队列存储文件中已上传成功的分片数据,失败队列存储文件中上传失败的分片数据,中止标识符记录当前分片是否属于已被中止上传状态,文件唯一标识用于区分不同文件,每个文件分片上传均要携带该标识。
新增文件的分片总数为该文件的分片数量,待处理队列存储所有分片数据,成功队列和失败队列默认为空,中止标识符默认为false,文件唯一标识为自动生成的序号。
步骤520,根据状态数据判断文件双向链表中是否存在中止文件;若是,执行步骤530,若否,执行步骤540;其中,中止文件是指已中止上传的文件,其状态数据中的中止标识符为true。
步骤530,将新增文件的代理对象通过双向指针链接在首个中止文件之前。所有中止文件均应当置于文件链表尾部,待全部未中止文件上传完毕后再处理中止文件。
步骤540,将新增文件的代理对象通过双向指针链接在已有的文件链表尾部。后续可按照上传顺序向服务器发送上传分片请求,符合用户的预期。
根据本发明的一个实施例,根据待上传文件的状态数据,将待上传文件对应的分片数据发送至服务器的过程同上述步骤310~350。
根据本发明的一个实施例,根据资源池能力将分片数据发送至服务器的流程同上述步骤410~430。
根据本发明的一个实施例,所述文件上传方法还包括:
在所述待上传文件对应的分片数据上传结束后,根据所述待上传文件的成功队列判断所述待上传文件对应的分片数据均上传成功的情况下,删除所述待上传文件。
具体来说,代理对象中待处理分片队列与失败队列均为空,且成功队列的长度等于分片总数的情况,表明待上传文件的全部分片已上传成功,可以从成功队列中取出全部分片数据,借助其他服务将分片数据合成完整的文件,同时将该文件从文件链表中删除。
根据本发明的一个实施例,图6为接收中止指令的处理流程示意图,如图6所示,包括:
步骤610,接收目标文件的中止指令。
步骤620,从所述文件双向链表头部向后查找所述目标文件对应的代理对象。
步骤630,将所述代理对象的所述中止标识符修改为true,将所述代理对象从当前位置移出并插入至所述文件双向链表的尾部。
其中,采用从前向后查找目标文件的方式,能以较少的查找步数找到目标文件,同时将中止文件置于链表尾部,实现优先处理非中止模块,可以减少不必要的判断,不浪费javascript的主线程能力。
根据本发明的一个实施例,图7为接收唤起指令的处理流程示意图,如图7所示,包括:
步骤710,接收目标文件的唤起指令。
步骤720,从所述文件双向链表尾部向前查找所述目标文件对应的代理对象。
步骤730,将所述代理对象的所述中止标识符修改为false,将所述代理对象从当前位置移出并插入至所述文件双向链表头部。
其中,将被唤起文件置于链表头部,在所有待上传文件中优先处理,给用户及时反馈。对于断点续传的文件,通常不能获得优先处理的权限,成熟的PC端应用仅仅是在文件中断后将其放入队尾,如果想要优先处理,就需要把前面的文件逐个中止,而纯网页的断点续传,没有对请求优先级做任何处理,中断后自动放入请求队列的队尾,不能优先处理用户刚唤醒的文件,这种处理方式不符合用户的预期。而本发明使用代理对象管理单个文件,通过调整代理对象的在链表中的位置,实现动态调整文件上传的优先级。
根据本发明的一个实施例,图8为接收删除指令的处理流程示意图,如图8所示,包括:
步骤810,接收目标文件的删除指令。
步骤820,从所述文件双向链表头部向后查找所述目标文件对应的代理对象。
步骤830,将所述代理对象从所述文件双向链表中移除,释放所述代理对象占据的内存空间。
根据本发明的一个实施例,图9为接收重试指令的处理流程示意图,如图9所示,包括:
步骤910,接收目标文件的重试指令。
步骤920,在所述文件双向链表中找到所述目标文件对应的代理对象。
步骤930,将所述代理对象失败队列中的分片数据逐一拷贝至待处理分片队列,并将所述代理对象从当前位置移出并插入至所述文件双向链表头部。
其中,将断点续传的文件置于链表头部,在所有待上传文件中优先处理,给用户及时反馈,以满足用户的心理预期。
下面对本发明提供的文件上传装置进行描述,下文描述的文件上传装置与上文描述的文件上传方法可相互对应参照。
图10为本发明实施例提供的文件上传装置的结构示意图,如图10所示,该装置包括:
接收外部指令模块1010,用于接收上传文件指令。
遍历文件链表模块1020,用于遍历文件双向链表,确定待上传文件对应的代理对象;其中,所述文件双向链表包括多个依次通过双向指针链接的代理对象,所述代理对象包括对应文件的状态数据和分片数据。
发送分片数据模块1030,用于根据所述待上传文件的状态数据,将所述待上传文件对应的分片数据发送至服务器。
本发明提供的文件上传装置,通过接收上传文件指令,遍历文件双向链表,确定待上传文件对应的代理对象,然后根据待上传文件的状态数据,将待上传文件对应的分片数据发送至服务器。该装置使用双向链表结构对所有待处理文件进行集中统一调度和管理,实现多文件的简便并行处理,使分片上传过程不再需要依赖发布订阅模式并可以对上传状态实时监管,使文件处理流程不丢失,为重试和断点续传做好准备,实现文件上传的高效、稳定,同时提升用户体验。
根据本发明的一个实施例,遍历文件链表模块1020还用于:
在接收上传文件指令的情况下,若接收到新增文件,生成所述新增文件的代理对象;
根据所述状态数据判断所述文件双向链表中是否存在中止文件;
若是,将所述新增文件的代理对象添加至首个中止文件之前;
若否,将所述新增文件的代理对象添加至文件双向链表的尾部。
根据本发明的一个实施例,所述状态数据包括:待处理分片队列、成功队列、失败队列、分片总数、中止标识符和文件唯一标识符;
发送分片数据模块1030还用于:
根据所述待上传文件的状态数据,确定所述待上传文件的状态;
若所述待上传文件的状态为中止状态,停止访问后续的代理对象;
若所述待上传文件的状态为非中止状态,且所述待上传文件的分片总数为1,直接将所述待上传文件对应的分片数据上传至服务器,若上传成功,将所述分片数据存储至所述代理对象的成功队列,若上传失败,将所述分片数据存储至所述代理对象的失败队列;
若所述待上传文件的状态为非中止状态,且所述待上传文件的分片总数大于1,且存在文件唯一标识符,根据资源池能力将所述待上传文件对应的分片数据发送至服务器;
若所述待上传文件的状态为非中止状态,且所述待上传文件的分片总数大于1,且文件唯一标识符为空,将所述待上传文件的状态设置为锁定状态,继续访问下一个待上传文件的代理对象。
根据本发明的一个实施例,发送分片数据模块1030还用于:
判断所述待上传文件对应的待处理分片数量是否小于可用资源池能力;
若是,将所述待上传文件对应的分片数据逐一上传至服务器,若上传成功,将所述分片数据存储至所述代理对象的成功队列,若上传失败,将所述分片数据存储至所述代理对象的失败队列;
若否,根据当前的可用资源池能力,将所述待上传文件对应的分片数据通过可用资源池上传至服务器,若上传成功,将所述分片数据存储至所述代理对象的成功队列,若上传失败,将所述分片数据存储至所述代理对象的失败队列。
根据本发明一个实施例,遍历文件链表模块1020还用于:
在所述待上传文件对应的分片数据上传结束后,根据所述待上传文件的成功队列判断所述待上传文件对应的分片数据均上传成功的情况下,删除所述待上传文件。
根据本发明的一个实施例,遍历文件链表模块1020还用于:
接收目标文件的中止指令;
从所述文件双向链表头部向后查找所述目标文件对应的代理对象;
将所述代理对象的所述中止标识符修改为true,将所述代理对象从当前位置移出并插入至所述文件双向链表的尾部。
根据本发明一个实施例,遍历文件链表模块1020还用于:
接收目标文件的唤起指令;
从所述文件双向链表尾部向前查找所述目标文件对应的代理对象;
将所述代理对象的所述中止标识符修改为false,将所述代理对象从当前位置移出并插入至所述文件双向链表头部。
根据本发明的一个实施例,遍历文件链表模块1020还用于:
接收目标文件的删除指令;
从所述文件双向链表头部向后查找所述目标文件对应的代理对象;
将所述代理对象从所述文件双向链表中移除,释放所述代理对象占据的内存空间。
根据本发明的一个实施例,遍历文件链表模块1020还用于:
接收目标文件的重试指令;
在所述文件双向链表中找到所述目标文件对应的代理对象;
将所述代理对象失败队列中的分片数据逐一拷贝至待处理分片队列,并将所述代理对象从当前位置移出并插入至所述文件双向链表头部。
图11示例了一种电子设备的实体结构示意图,如图11所示,该电子设备可以包括:处理器(processor)1110、通信接口(Communications Interface)1120、存储器(memory)1130和通信总线1140,其中,处理器1110,通信接口1120,存储器1130通过通信总线1140完成相互间的通信。处理器1110可以调用存储器1130中的逻辑指令,以执行文件上传方法,该方法包括:接收上传文件指令;遍历所述文件双向链表,确定待上传文件对应的代理对象;其中,所述文件双向链表包括多个依次通过双向指针链接的代理对象,所述代理对象包括对应文件的状态数据和分片数据;根据所述待上传文件的状态数据,将所述待上传文件对应的分片数据发送至服务器。
此外,上述的存储器1130中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的文件上传方法,该方法包括:接收上传文件指令;遍历所述文件双向链表,确定待上传文件对应的代理对象;其中,所述文件双向链表包括多个依次通过双向指针链接的代理对象,所述代理对象包括对应文件的状态数据和分片数据;根据所述待上传文件的状态数据,将所述待上传文件对应的分片数据发送至服务器。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的文件上传方法,该方法包括:接收上传文件指令;遍历所述文件双向链表,确定待上传文件对应的代理对象;其中,所述文件双向链表包括多个依次通过双向指针链接的代理对象,所述代理对象包括对应文件的状态数据和分片数据;根据所述待上传文件的状态数据,将所述待上传文件对应的分片数据发送至服务器。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (9)

1.一种文件上传方法,其特征在于,包括:
接收上传文件指令;
遍历文件双向链表,确定待上传文件对应的代理对象;其中,所述文件双向链表包括多个依次通过双向指针链接的代理对象,所述代理对象包括对应文件的状态数据和分片数据;
根据所述待上传文件的状态数据,将所述待上传文件对应的分片数据发送至服务器。
2.根据权利要求1所述的文件上传方法,其特征在于,所述方法还包括:在接收上传文件指令的情况下,若接收到新增文件,生成所述新增文件的代理对象;
根据所述状态数据判断所述文件双向链表中是否存在中止文件;
若是,将所述新增文件的代理对象添加至首个中止文件之前;
若否,将所述新增文件的代理对象添加至文件双向链表的尾部。
3.根据权利要求1所述的文件上传方法,其特征在于,所述状态数据包括:待处理分片队列、成功队列、失败队列、分片总数、中止标识符和文件唯一标识符;
根据所述待上传文件的状态数据,将所述待上传文件对应的分片数据发送至服务器,包括:
根据所述待上传文件的状态数据,确定所述待上传文件的状态;
若所述待上传文件的状态为中止状态,停止访问后续的代理对象;
若所述待上传文件的状态为非中止状态,且所述待上传文件的分片总数为1,直接将所述待上传文件对应的分片数据上传至服务器,若上传成功,将所述分片数据存储至所述代理对象的成功队列,若上传失败,将所述分片数据存储至所述代理对象的失败队列;
若所述待上传文件的状态为非中止状态,且所述待上传文件的分片总数大于1,且文件唯一标识符为空,将所述待上传文件的状态设置为锁定状态,继续访问下一个待上传文件的代理对象;
若所述待上传文件的状态为非中止状态,且所述待上传文件的分片总数大于1,且存在文件唯一标识符,根据资源池能力将所述待上传文件对应的分片数据发送至服务器。
4.根据权利要求3所述的文件上传方法,其特征在于,所述根据资源池能力将所述待上传文件对应的分片数据发送至服务器,包括:
判断所述待上传文件对应的待处理分片数量是否小于可用资源池能力;
若是,将所述待上传文件对应的分片数据逐一上传至服务器,若上传成功,将所述分片数据存储至所述代理对象的成功队列,若上传失败,将所述分片数据存储至所述代理对象的失败队列;
若否,根据当前的可用资源池能力,将所述待上传文件对应的分片数据通过可用资源池上传至服务器,若上传成功,将所述分片数据存储至所述代理对象的成功队列,若上传失败,将所述分片数据存储至所述代理对象的失败队列。
5.根据权利要求4所述的文件上传方法,其特征在于,所述方法还包括:
在所述待上传文件对应的分片数据上传结束后,根据所述待上传文件的成功队列判断所述待上传文件对应的分片数据均上传成功的情况下,删除所述待上传文件。
6.根据权利要求3所述的文件上传方法,其特征在于,所述方法还包括:
接收目标文件的中止指令;
从所述文件双向链表头部向后查找所述目标文件对应的代理对象;
将所述代理对象的所述中止标识符修改为true,将所述代理对象从当前位置移出并插入至所述文件双向链表的尾部。
7.根据权利要求3所述的文件上传方法,其特征在于,所述方法还包括:
接收目标文件的重试指令;
在所述文件双向链表中找到所述目标文件对应的代理对象;
将所述代理对象失败队列中的分片数据逐一拷贝至待处理分片队列,并将所述代理对象从当前位置移出并插入至所述文件双向链表头部。
8.一种文件上传装置,其特征在于,包括:
接收外部指令模块,用于接收上传文件指令;
遍历文件链表模块,用于遍历文件双向链表,确定待上传文件对应的代理对象;其中,所述文件双向链表包括多个依次通过双向指针链接的代理对象,所述代理对象包括对应文件的状态数据和分片数据;
发送分片数据模块,用于根据所述待上传文件的状态数据,将所述待上传文件对应的分片数据发送至服务器。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述文件上传方法的步骤。
CN202110778008.0A 2021-07-09 2021-07-09 一种文件上传方法和装置、电子设备及存储介质 Active CN113726842B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110778008.0A CN113726842B (zh) 2021-07-09 2021-07-09 一种文件上传方法和装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110778008.0A CN113726842B (zh) 2021-07-09 2021-07-09 一种文件上传方法和装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113726842A CN113726842A (zh) 2021-11-30
CN113726842B true CN113726842B (zh) 2022-07-05

Family

ID=78673097

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110778008.0A Active CN113726842B (zh) 2021-07-09 2021-07-09 一种文件上传方法和装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113726842B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114650287B (zh) * 2022-04-06 2024-04-30 中国工商银行股份有限公司 一种数据文件的断点续做方法、装置和系统
CN114780003A (zh) * 2022-05-23 2022-07-22 北京达佳互联信息技术有限公司 素材上传方法及相关设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9413825B2 (en) * 2007-10-31 2016-08-09 Emc Corporation Managing file objects in a data storage system
US10547664B2 (en) * 2013-03-21 2020-01-28 Oracle International Corporation Enable uploading and submitting multiple files
CN105141696A (zh) * 2015-09-17 2015-12-09 成都华为技术有限公司 文件上传方法和装置
CN107872489B (zh) * 2016-09-28 2020-06-05 杭州海康威视数字技术股份有限公司 一种文件切片上传方法、装置及云存储系统
CN106453668A (zh) * 2016-12-26 2017-02-22 网宿科技股份有限公司 一种文件反向上传方法和系统
CN107172131B (zh) * 2017-04-26 2020-12-04 腾讯科技(深圳)有限公司 文件上传方法和装置
CN110650164B (zh) * 2018-06-26 2021-03-05 马上消费金融股份有限公司 文件的上传方法、装置、终端以及计算机存储介质
CN110300151B (zh) * 2019-05-22 2022-02-11 深圳壹账通智能科技有限公司 数据文件上传方法及系统
CN111897668B (zh) * 2020-09-30 2021-01-08 南京拓界信息技术有限公司 基于链表的文件并行拷贝方法、装置和计算机设备

Also Published As

Publication number Publication date
CN113726842A (zh) 2021-11-30

Similar Documents

Publication Publication Date Title
CN113726842B (zh) 一种文件上传方法和装置、电子设备及存储介质
US11275763B2 (en) Storage constrained synchronization of shared content items
US9442997B2 (en) Idle state triggered constrained synchronization of shared content items
EP3495981B1 (en) Directory deletion method and device, and storage server
US8275787B2 (en) System for managing data collection processes
CN108885568A (zh) 在按需代码执行环境处处理先已存在的数据集
US20040215673A1 (en) Storage sub-system and management program
JP2011118771A (ja) 情報処理装置、情報処理方法、データ管理サーバおよびデータ同期システム
CN113238861A (zh) 一种任务执行方法和装置
US20240129251A1 (en) Data processing method and apparatus, computer device, and readable storage medium
CN111400041A (zh) 服务器配置文件的管理方法、装置及计算机可读存储介质
CN113687781A (zh) 一种热数据的上拉方法、装置、设备及介质
CN116301568A (zh) 一种数据访问方法、装置以及设备
US11354164B1 (en) Robotic process automation system with quality of service based automation
US8482767B2 (en) Print job submission with sleep mechanism
US11252121B2 (en) Message sending method and terminal device
CN110941591A (zh) 一种文件删除方法、装置、设备及可读存储介质
KR101845195B1 (ko) M2m 시스템에서 다중 리소스 구독 연관 방법
CN115951845A (zh) 一种磁盘管理方法、装置、设备及存储介质
CN114374657B (zh) 一种数据处理方法和装置
CN105740065A (zh) 一种控制异步任务执行的方法及装置
CN115118782A (zh) 数据控制方法、装置、电子设备及计算机可读存储介质
CN110837428A (zh) 存储设备管理方法及装置
CN114722003A (zh) 中心化数据采集方法、装置、设备及存储介质
CN112688980A (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
TA01 Transfer of patent application right

Effective date of registration: 20220114

Address after: 100085 Floor 101 102-1, No. 35 Building, No. 2 Hospital, Xierqi West Road, Haidian District, Beijing

Applicant after: Seashell Housing (Beijing) Technology Co.,Ltd.

Address before: 101309 room 24, 62 Farm Road, Erjie village, Yangzhen, Shunyi District, Beijing

Applicant before: Beijing fangjianghu Technology Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant