本发明涉及计算机互联网技术,尤指一种文件上传方法和系统。
背景技术:
文件上传是软件开发过程中的常有功能,但无论是通过在windows客户端程序,还是通过浏览器,无论采用哪一种协议,都存在些许限制,常见的限制如网络状态、协议对请求时间及文件大小的限制等。这些限制通常会造成文件传输中断,甚至请求被拒绝,导致文件上传失败。这种问题在上传超大文件时表现得尤其明显。
技术实现要素:
为了解决上述技术问题,本发明提供了一种文件上传方法和系统,通过切片的方式对待上传的文件进行处理,得到多个粒度更小的数据单元,逐个上传切片最终实现对整个文件的上传,降低了传输出错的机率,解决了文件上传容易受到网络影响导致失败的问题。
为了达到本发明目的,本发明提供了一种文件上传方法,包括:
根据设置的切片大小,对待上传文件进行切片处理,得到至少一个切片,确定切片总数;
依序逐个上传所述切片至服务端,直至全部切片上传完成为止。
优选的,该方法还包括:
计算所述待上传文件的哈希值和总大小。
优选的,在上传每个切片时,均携带以下参数中的任一或任意多项的组合:
所述待上传文件的哈希值,所述待上传文件的总大小,切片总数,当前传输的切片序号。
本发明还提供了一种文件上传方法,包括:
接收客户端上传的切片;
在全部切片接收完成后,按照切片的顺序组合成完整文件并保存。
优选的,在接收客户端上传的切片时,还接收到了如下参数中的任一或任意多项的组合:
所述待上传文件的哈希值,所述待上传文件的总大小,切片总数,当前传输的切片序号。
优选的,接收客户端上传的切片的步骤之后,还包括:
通过以下表达式计算传输进度,向所述客户端反馈所述传输进度:
传输进度=已接收到切片大小之和/所述待上传文件的总大小。
优选的,接收客户端上传的切片的步骤之后,还包括:
将接收到的每个切片都单独存放在独立的文件夹下。
优选的,在全部切片接收完成后,按照切片的顺序组合成完整文件并保存的步骤包括:
遍历全部文件夹获取全部切片;
按照顺序将所述切片拼接成完整文件,删除单独存放的切片及文件夹;
计算所述完整文件的哈希值,在计算得到的哈希值与接收到哈希值一致时,完成完整性检查,保存所述完整文件。
本发明还提供了一种文件上传系统,包括服务端与客户端;
所述客户端,用于根据设置的切片大小,对待上传文件进行切片处理,得到至少一个切片,确定切片总数,依序逐个上传所述切片至所述服务端,直至全部切片上传完成为止;
所述服务端,用于接收所述客户端上传的切片,在全部切片接收完成后,按照切片的顺序组合成完整文件并保存。
优选的,所述服务端,还用于通过以下表达式计算传输进度,向所述客户端反馈所述传输进度:
传输进度=已接收到切片大小之和/所述待上传文件的总大小。
本发明提供了一种文件上传方法和系统,在客户端,根据设置的切片大小,对待上传文件进行切片处理,得到至少一个切片,确定切片总数,依序逐个上传所述切片至服务端,直至全部切片上传完成为止;在服务端,接收客户端上传的切片,在全部切片接收完成后,按照切片的顺序组合成完整文件并保存。实现了具有断点续传效果的文件上传,解决了文件上传容易受到网络影响导致失败的问题。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明的实施例一提供的一种文件上传方法的流程示意图;
图2为本发明的实施例一提供的一种文件上传方法的实现原理示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
网络限制通常会造成文件传输中断,甚至请求被拒绝,导致文件上传失败。这种问题在上传超大文件时表现得尤其明显。
为最解决上述问题,本发明的实施例提供了一种文件上传方法和系统,通过文件切片、文件传输、文件合并、进度计算、完整性检测、网络异常处理等功能,实现了高可靠性的文件,尤其是大文件的上传,解决了文件上传容易受到网络影响导致失败的问题。
首先结合附图,对本发明的实施例一进行说明。
本发明实施例提供了一种文件上传方法,使用该方法完成文件传输的流程如图1所示,包括:
步骤101、根据设置的切片大小,对待上传文件进行切片处理,得到至少一个切片,确定切片总数;
本步骤中,客户端计算待上传文件的哈希(hash)值及总大小,根据总大小和切片大小计算所需要切割的切片总数。切片大小的设置可根据网络情况和文件大小进行调整。
步骤102、依序逐个上传所述切片至服务端,直至全部切片上传完成为止;
本步骤中,按照顺序对文件进行切片并异步传输,传输时附带参数:所述待上传文件的哈希值,所述待上传文件的总大小,切片总数,当前传输的切片序号。
步骤103、服务端接收客户端上传的切片;
本步骤中,服务端接收切片,将每个切片都存放在一个单独目录文件夹下。优选的,目录以文件hash值命名,切片文件名称定为“文件hash值+序号”的格式。
步骤104、计算传输进度,向所述客户端反馈所述传输进度;
通过以下表达式计算传输进度,向所述客户端反馈所述传输进度:
传输进度=已接收到切片大小之和/所述待上传文件的总大小。
当进度达到100%时,暂不反馈客户端,进入文件的合并和完整性检查阶段,完成后再反馈客户端。
步骤105、在全部切片接收完成后,按照切片的顺序组合成完整文件并保存;
本步骤具体包括:
1、遍历全部文件夹获取全部切片;
2、按照顺序将所述切片拼接成完整文件,删除单独存放的切片及文件夹;
3、计算所述完整文件的哈希值,在计算得到的哈希值与接收到哈希值一致时,完成完整性检查,保存所述完整文件。hash值匹配则完成上传过程,最后反馈客户端。
使用本发明实施例提供的文件上传方法进行切片上传的原理如图2所示。
在文件上传过程中可能会出现的异常以及处理方式如下:
(1)单个切片传输失败。这种情况需要客户端重新上传此切片。如果失败次数过多,可直接放弃上传并提示错误。
(2)上传取消后再次上传同一文件。这种情况下,由于切片文件夹以及切片是以文件hash值为基础命名的,所以第二次上传同一文件时会检测到此文件之前上传的切片,这些切片可以直接利用,并在此基础上继续上传,计算进度时也直接计算在内,由此实现了断点续传的效果。
(3)放弃上传产生垃圾切片。若用户上传过程中取消了上传,会产生垃圾切片,可建立专门的定时任务,清理这些文件。
注意,定时任务清理垃圾切片时,应避开那些刚上传不久的切片文件,因为这些文件可能正在使用或者不久后会使用。因此,清理垃圾切片时有必要检查切片目录的创建时间距离当前时间是否足够久。
下面对本发明的实施例二进行说明。
本发明实施例提供了一种文件上传系统,该系统包括:
所述客户端,用于根据设置的切片大小,对待上传文件进行切片处理,得到至少一个切片,确定切片总数,依序逐个上传所述切片至所述服务端,直至全部切片上传完成为止;
所述服务端,用于接收所述客户端上传的切片,在全部切片接收完成后,按照切片的顺序组合成完整文件并保存。
优选的,所述服务端,还用于通过以下表达式计算传输进度,向所述客户端反馈所述传输进度:
传输进度=已接收到切片大小之和/所述待上传文件的总大小。
本发明的实施例提供了一种文件上传方法和系统,在客户端,根据设置的切片大小,对待上传文件进行切片处理,得到至少一个切片,确定切片总数,依序逐个上传所述切片至服务端,直至全部切片上传完成为止;在服务端,接收客户端上传的切片,在全部切片接收完成后,按照切片的顺序组合成完整文件并保存。实现了具有断点续传效果的文件上传,解决了文件上传过程中由于网络中断、协议限制等原因造成无法上传或上传失败问题。定时任务清理,并在清理时检查文件的创建时间与当前时间相比是否足够早,以免误删正在使用的切片文件,进一步提高了文件上传的可靠性。
虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。