文件上传方法和装置与流程

文档序号:12809664阅读:206来源:国知局
文件上传方法和装置与流程

本申请涉及计算机技术领域,具体涉及互联网技术领域,尤其涉及文件上传方法和装置。



背景技术:

文件的断点续传是指文件在上传过程中被中断后,可以在再次上传时从上次的断点处开始传输,以节省时间和其它资源。

然而,现有的文件断点续传技术可以通过专用的上传或下载应用实现,在浏览器上实现文件断点续传需要借助额外的插件,不能通过浏览器自身提供的资源直接实现,因此通用性较差。



技术实现要素:

本申请的目的在于提出一种改进的文件上传方法和装置,来解决以上背景技术部分提到的技术问题。

第一方面,本申请提供了一种文件上传方法,所述方法包括:检测对文件的续传指令;响应于检测到的续传指令,获取所述文件对应的文件分片指示信息,所述文件分片指示信息用于指示对所述文件的文件分片依次上传时最近一次成功上传至服务器的文件分片;根据所述文件分片指示信息确定所述文件的未上传部分并对所述未上传部分进行上传。

在一些实施例中,所述检测对文件的续传指令,包括:接收对所述文件的上传指令;根据所述文件的文件属性信息在所述服务器中查找是否存在与所述文件相同的文件;若存在,则确认所述上传指令为续传指令。

在一些实施例中,所述文件属性信息包括以下至少一项:文件名、文件大小。

在一些实施例中,在所述检测对文件的续传指令之后,所述方法还包括:响应于检测到的续传指令,获取所述文件对应的令牌信息并使用所述令牌信息对所述续传指令进行权限验证,其中,所述令牌信息是对所述文件首次执行上传操作时生成的。

在一些实施例中,所述获取所述文件对应的文件分片指示信息,包括:确定本地是否存在所述文件对应的文件分片指示信息;若存在,从本地获取所述文件对应的文件分片指示信息,否则从所述服务器获取所述文件对应的文件分片指示信息。

在一些实施例中,所述文件分片是基于javascript中blob对象或file对象的文件切割方法获得的

在一些实施例中,所述对所述文件的文件分片依次上传是通过html5规范中的formdata对象上传的。

第二方面,本申请提供了一种文件上传装置,所述装置包括:检测单元,配置用于检测对文件的续传指令;获取单元,配置用于响应于检测到的续传指令,获取所述文件对应的文件分片指示信息,所述文件分片指示信息用于指示对所述文件的文件分片依次上传时最近一次成功上传至服务器的文件分片;上传单元,配置用于根据所述文件分片指示信息确定所述文件的未上传部分并对所述未上传部分进行上传。

在一些实施例中,所述检测单元包括:上传指令接收子单元,配置用于接收对所述文件的上传指令;查找子单元,配置用于根据所述文件的文件属性信息在所述服务器中查找是否存在与所述文件相同的文件;确认子单元,配置用于若所述服务器中存在与所述文件相同的文件,则确认所述上传指令为续传指令。

在一些实施例中,所述文件属性信息包括以下至少一项:文件名、文件大小。

在一些实施例中,所述装置还包括:权限验证单元,配置用于响应于检测到的续传指令,获取所述文件对应的令牌信息并使用所述令牌信息对所述续传指令进行权限验证,其中,所述令牌信息是对所述文件首次执行上传操作时生成的。

在一些实施例中,所述获取单元包括:确定子单元,配置用于确定本地是否存在所述文件对应的文件分片指示信息;获取子单元,配置用于若存在,从本地获取所述文件对应的文件分片指示信息,否则从所述服务器获取所述文件对应的文件分片指示信息。

在一些实施例中,所述文件分片是基于javascript中blob对象或file对象的文件切割方法获得的。

在一些实施例中,所述对所述文件的文件分片依次上传是通过html5规范中的formdata对象上传的。

本申请提供的文件上传方法和装置,通过在文件依次分片上传时记录用于指示最近一次上传成功的文件分片的指示信息以及在续传时通过该指示信息获取文件上传的进度以对未完成部分进行续传,从而实现了文件的断点续传。该方案中文件分片上传、记录指示信息以及读取指示信息都可以通过浏览器实现,因此使得该方案可通过浏览器直接实现文件断点续传,提高了断点续传技术的通用性。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是本申请可以应用于其中的示例性系统架构图;

图2是根据本申请的文件上传方法的一个实施例的流程图;

图3是根据本申请的文件分片指示信息生成的一个流程图;

图4是根据本申请的文件上传装置的一个实施例的结构示意图;

图5是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了可以应用本申请的文件上传方法或文件上传装置的实施例的示例性系统架构100。

如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备101、102、103通过网络104与服务器105交互,以进行文件的上传等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、文件上传与下载类应用等。

终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。

服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上传的文件进行存储的后台服务器。后台服务器可以对接收到的文件上传请求等数据进行分析等处理,并将处理结果(例如文件分片存储成功信息)反馈给终端设备。

需要说明的是,本申请实施例所提供的文件上传方法一般由终端设备101、102、103执行,相应地,文件上传装置一般设置于终端设备101、102、103中。

应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

继续参考图2,示出了根据本申请的文件上传方法的一个实施例的流程200。所述的文件上传方法,包括以下步骤:

步骤201,检测对文件的续传指令。

在本实施例中,文件上传方法运行于其上的电子设备(例如图1所示的终端设备)可以通过检测用户作用在该电子设备上的操作接收文件续传指令。续传指令是指在文件上传中断后对上传的文件继续上传的指令。造成文件上传中断的原因包括但不限于网络中断、用户关闭浏览器、浏览器崩溃。其中,电子设备可以根据文件上传窗口点击待续传的文件或者将待续传的文件拖拽至预设区域等操作信号接收文件上传指令,还可以其他用于上传待续传的文件的操作接收文件上传指令。电子设备可以通过各种手段判断是否对该文件执行过上传操作,以进一步判断上传指令是否为续传指令。例如,可以使用缓存信息判断是否对该文件执行过上传操作,或者通过其他标记信息否对该文件执行过上传操作。可选的,对文件的续传指令可以通过浏览器检测。

步骤202,响应于检测到的续传指令,获取文件对应的文件分片指示信息。

在本实施例中,响应于步骤201检测到的续传指令,上述电子设备(例如图1所示的服务器)可以获取文件对应的文件分片指示信息。

其中,文件分片指示信息可以是根据图3中所述的步骤301和步骤302生成的。首先,电子设备可以通过步骤301依次上传文件的文件分片。每个文件分片可以是长度相等的小块,例如每个文件分片均为200千字节。然后,电子设备可以通过步骤302在每个文件分片成功上传至服务器时,更新文件分片指示信息以使文件分片指示信息指示最近一次成功上传至服务器的文件分片。其中,文件分片指示信息可以在该文件第一次上传时创建,其初始值可以置为空或者零。该指示信息可以是每个上传成功的文件分片在文件中的序号,也可以是其他可用于指示文件分片的信息。电子设备可以通过服务器返回的文件分片存储成功的信号确定文件分片已成功上传。

文件分片指示信息可以以键值对的方式进行存储。其中,键用于存储文件分片指示信息对应的文件标识(例如加密后的文件名),值用于存储文件分片指示信息的值。文件分片信息可以存储在电子设备本地处,也可以存储在服务器中。

电子设备在获取文件对应的文件分片指示信息时,可以根据文件标识在多个文件分片指示信息集合中查找与该文件对应的文件分片指示信息。当文件标识为加密后的文件名时,查找过程还需要对文件名进行加密或解密处理。

步骤203,根据文件分片指示信息确定文件的未上传部分并对未上传部分进行上传。

在本实施例中,在获取到文件的文件分片信息后,即可确定该文件已上传成功的部分在文件中的位置。同时,由于文件分片是依次上传的,因此可以确定在该位置之后的文件部分为该文件的未上传部分。例如,当文件分片指示信息为文件分片序号时,电子设备可以根据文件分片序号以及每个文件分片的大小信息确定未上传部分的起始位置在文件中的偏移量,从而确定文件的未上传部分。

在确定文件的未上传部分后,电子设备可以对该文件的未上传部分继续上传,从而实现了文件的断点续传。可选的,在对文件的未上传部分进行上传时,可以对未上传部分的文件分片依次上传并根据文件分片的上传情况更新上述文件分片指示信息,以便在再次出现上传中断后还可以通过文件分片指示信息实现文件续传。

本申请的上述实施例提供的方法通过在文件依次分片上传时记录用于指示最近一次上传成功的文件分片的指示信息以及在续传时通过该指示信息获取文件上传的进度以对未完成部分进行续传,从而实现了文件的断点续传。其中,上述实施例中文件分片上传、记录指示信息以及读取指示信息都可以直接通过浏览器中的javascript代码实现,因此该方案可通过浏览器直接实现文件断点续传,而不需要借助额外的插件,提高了断点续传技术的通用性。

在本实施例的一些可选的实现方式中,上述电子设备可以通过以下方式实现对文件的续传指令的检测。首先,电子设备接收对文件的上传指令。接着,电子设备根据文件的文件属性信息在上述服务器中查找是否存在与待上传文件相同的文件。其中,文件属性信息可以是文件的各种描述性信息或者文件内容信息,例如文件类型信息、文件哈希值。

可选的,上述文件属性信息可以是文件名与文件大小中的至少一项。其中,使用文件名在服务器中查找相同文件较为简便,查找速度较快;不同文件的文件大小相同的可能性很小,因此也可以通过文件大小在服务器中查找相同文件。在使用文件大小进行查找时,可以使文件大小精确到字节级别,以提高查找准确性。此外,可以同时使用文件名和文件大小进行查找,以进一步提高文件查找的准确性。相比于其他方式,通过文件名与文件大小进行查找具有较快的查找速度。

在本实施例的一些可选的实现方式中,在上述步骤201后,上述实施例中的文件上传方法还包括以下步骤:响应于检测到的续传指令,获取文件对应的令牌信息并使用令牌信息对续传指令进行权限验证。其中,在对文件首次执行上传操作时,可以为该文件生成用于防止恶意攻击的令牌信息。当对文件进行续传时,可以获取文件对应的令牌信息并使用令牌信息对用户的操作进行权限验证,以避免恶意攻击,从而提高操作安全性。令牌信息的生成以及利用令牌信息进行权限验证属于现有技术,这里不再赘述。

在本实施例的一些可选的实现方式中,获取文件对应的文件分片指示信息可以通过以下方式实现:确定本地是否存在该文件对应的文件分片指示信息;若存在,从本地获取文件对应的文件分片指示信息,否则从服务器获取文件对应的文件分片指示信息。通常,文件分片信息可以存储在电子设备本地,也可以在服务器中进行备份存储。在一些异常原因(例如用于文件上传的浏览器异常关闭)导致文件上传中断时,电子设备可能无法在本地保存文件分片指示信息,服务器中的备份可以保证文件分片指示信息的可用性。因此,当对上传中断的文件进行断点续传时,可以优先在电子设备本地查找该文件对应的文件分片指示信息,若查找到件对应的文件分片指示信息,则直接获取电子设备本地的文件分片指示信息,从而具有较高的效率,同时也避免了对网络资源的额外消耗。若未查找到件对应的文件分片指示信息,从服务器中获取文件分片指示信息。通过这种本地获取与服务器获取结合的方法,提高了获取文件分片指示信息的效率,同时也能确保在由于异常原因导致本地无法保存文件分片指示信息也能获取到该文件 分片指示信息,确保方案的可行性。

在本实施例的一些可选的实现方式中,上述文件分片是基于javascript中blob对象或file对象的文件切割方法获得的。在使用浏览器执行文件上传操作时,可以通过javascript中的api(applicationprogramminginterface,应用程序编程接口)对文件切割。blob对象或file对象都存在用于切割文件的方法。不同的浏览器中使用的具体方法可能存在差异,例如火狐浏览器中可以使用mozslice()方法进行文件切割,谷歌浏览器中可以使用webkitslice()方法,其他浏览器则可以使用slice()方法。文件切割后,所形成的各个文件分片是blob对象或file对象。

在本实施例的一些可选的实现方式中,对文件分片依次上传是通过html5(万维网的核心语言、标准通用标记语言下的一个应用超文本标记语言的第五次重大修改)规范中的formdata对象上传的。以对文件切分后的对象是blob对象或file对象为例,电子设备可以通过浏览器将blob对象或file对象直接添加到formdata对象,以进行上传。需要说明的是,通过其他方式切割而成的文件分片也可以通过formdata对象进行上传。使用formdata的最大优点就是可以对二进制文件异步上传。可选的,在提交方式上可以使用post或get方式进行提交。优选的,可以采用post方式,这种方式对每次上传的数据量没有大小限制,因此可以更灵活地设置每个文件分片的大小。

进一步参考图4,作为对上述各图所示方法的实现,本申请提供了一种文件上传装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图4所示,本实施例所述的文件上传装置400包括:检测单元401、获取单元402、上传单元403。其中,检测单元401配置用于检测对文件的续传指令;获取单元402配置用于响应于检测到的续传指令,获取文件对应的文件分片指示信息;上传单元403配置用于根据文件分片指示信息确定文件的未上传部分并对未上传部分进行上传。

在本实施例中,文件上传装置400的接收单元401可以通过检测 用户的预设操作接收文件续传指令。续传指令是指在文件上传中断后对上传的文件继续上传的指令。

在本实施例中,响应于检测单元401检测到的续传指令,上述解获取单元402可以获取文件对应的文件分片指示信息。文件分片指示信息可以以键值对的方式进行存储。其中,键用于存储文件分片指示信息对应的文件标识,值用于存储文件分片指示信息的值。

在本实施例中,基于获取单元402获取的文件分片指示信息,文件上传装置400的上传单元403可以确定文件中未上传部分的起始位置在文件中的偏移量,即确定了文件分片的未上传部分。之后,上传单元即可以对已确定的未完成部分继续上传。

本领域技术人员可以理解,上述文件上传装置400还包括一些其他公知结构,例如处理器、存储器等,为了不必要地模糊本公开的实施例,这些公知的结构在图4中未示出。

下面参考图5,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统500的结构示意图。

如图5所示,计算机系统500包括中央处理单元(cpu)501,其可以根据存储在只读存储器(rom)502中的程序或者从存储部分508加载到随机访问存储器(ram)503中的程序而执行各种适当的动作和处理。在ram503中,还存储有系统500操作所需的各种程序和数据。cpu501、rom502以及ram503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。

以下部件连接至i/o接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至i/o接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括检测单元、获取单元、上传单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,检测单元还可以被描述为“检测对文件的续传指令的单元”。

作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:检测对文件的续传指令;响应于检测到的续传指令,获取所述文件对应的文件分片指示信息,所述文件分片指示信息用于指示对所 述文件的文件分片依次上传时最近一次成功上传至服务器的文件分片;根据所述文件分片指示信息确定所述文件的未上传部分并对所述未上传部分进行上传。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1