一种基于互联网超文本传输协议的文件断点上传方法

文档序号:7967523阅读:220来源:国知局
专利名称:一种基于互联网超文本传输协议的文件断点上传方法
技术领域
本发明属于互联网超文本传输协议应用领域,具体涉及一种基于互联网超 文本传输协议的文件断点上传方法。
背景技术
在互联网高度发达的今天,文件传输一直网络中的重要应用技术。随着http协议的诞生,比起以往的ftp协议,它在文件传输技术上比后者应用更方 便、灵活且高效。在现有的技术中,利用http协议进行断点续传下载的文件 传输的技术手段已经早已被广泛应用,该技术解决了客户端从服务器上下载文 件时网络中断所引起的文件须重新下载的麻烦。然而随着服务器业务功能的发 展,诸如网络硬盘、个人主页、博客等的相继出现,对于客户端而言,如何高 效、顺利地上传文件对于广大网络用户就显得极其需要。
现有采用的http协议进行文件上传的过程大致如下
目前通常网页上传文件是通过Form表单提交的方式上传,编码类型采用 multipart/form-data (enctype二,, multipart/form-data,,),这样表单提交 的时候就会把表单里包含的数据或文件按multipart/form-data的表单打包方 式打包提交到服务器上接受的地址。这里的关键在于目前通常采用的方式是把 所有的数据打包发送,对于需要上传的文件而言他是从文件头也就是全部文件 都要发送。
根据上述过程,对于现有用http协议进行文件上传的技术来说,由于传 输时不能控制文件传输的开始位置,造成上传一个文件失败后如果要重新传输 就需要从头开始传,如果碰到文件比较大或者网络速度不稳定的情况下很难将 文件上传成功。当然,对于文件上传可以采用其它网络协议的应用环境(如 FTP),但这个给以http协议应用为主的web应用带来很大的不方便,同时,
由于各地的网络环境不同,其它的协议或上传方式有可能被禁止(如公司局域网封了FTP的21端口)。

发明内容
本发明的目的就是克服上述实际应用中存在的问题,使得文件在上传过程 中,利用通用的form表单multipart/form-data编码方式,自定义确认文件 开始打包上传的位置,该技术的实现为使用http协议Form表单提交文件类型 的数据提供完整的解决方案,使文件在不良网络环境下传输,即使传输到一般 失败,己经上传的部分也不会丢失,在下次传输的时候可以接着传输余下的部 分,这个对于文件较大,网络情况较差的用户具有非常大的意义。
为了实现上述发明目的,本发明所采用的技术方案如下一种基于互联网超文本传输协议的实现文件muUipart/form-data编码方
式下文件的断点上传方法,其特征在于,具体步骤如下
1. 用户登录提供上传文件服务的网站;
2. 进入文件上传页面,启动http断点上传控件,选择需要上传的文件;
3. 启动上传文件。http客户端给http服务器发送上传请求命令,该命令
信息携带了上传文件的特征信息与用户的特征信息。包括文件名,文件 大小,上传的目录,用户名以及防止恶意篡改的MD5信息等;
4. http客户端通过http协议发送请求数据,该过程和普通网页请求数据 方式一样可以通过get或post方法;以上访问都通过web服务80端口 来实现;
5. 服务器收到请求后,检索该上传文件的实际上传状态,如果没有上传会 创建该文件上传记录,如果以前上传过则得到该文件的存储位置及已经 上传的状态及大小;然后把请求结果发送给http客户端;
6. http客户端接收服务器的请求回复,并根据该回复信息得到上传的起始 位置;然后根据通用的form表单multipart/form-data编码方式从得 到的文件需要发送的起始位置开始将上传文件打包并发送数据文件流 体到服务器;该发送过程中同样附带了该文件的特征信息与用户信息, 其发送方式一般采用post方式发送文件;
7. 服务器接受到文件流体,及文件的其他信息,定位并打开该文件,同样移动写位置到文件续传的位置,在该位置保存接受的文件流数据;
8. 在上传过程中如果网络中断或服务器等故障中断,文件再次上传时http 客户端会重新启动步骤4开始的上传过程,并重新获得文件上传的开始 位置发送文件,确保上传文件的准确性;
9. 上传完成后服务器保存好该文件,然后更新该文件的数据记录为完成状 态并结束整个上传过程。
所述方法采用多次请求定位需要上传的文件的起始位置,发送时从起始位 置开始打包丢弃己经上传的部分。
所述方法运行的环境为基于tcp/ip的网络,可采用任意web服务器。
所述方法中涉及的数据文件的请求、发送方式完全是基于http协议,数 据文件报头的大小,数据块的大小和普通的web请求完全一致;但数据的传输 量没有任何限制,可以传输任意大小的文件。
本发明的有益效果在于该方法在上传的时候对文件流打包的开始位置进 行了修正,这样其就只会提供需要上传的部分文件体,对已经上传过的部分忽 略,使得在不改变现有协议的前提下,客户端实现文件上传过程中的断点续传。 这样可以有效解决诸如网络硬盘、相册、博客等在网络应用时,文件上传过程 中由于网络中断而重新上传所引起的重复劳动和浪费时间的问题。另外,该方 法的思路还可以通过Java、 Delphi语言以及0++语言来具体实现。


图1为本方法的工作流程图。
图2为本发明方法实施例中服务器的工作流程图。
图3为本发明方法实施例中客户端的工作流程图。
具体实施例方式
下面通过附图具体说明本发明。
本发明方法的应用于以支持http协议与TCP/IP协议的网络通信环境中, 按照上述发明内容所述,具体应用方案如下:
网络环境-
本实施例的中,我们采用的硬件配置为
1、 服务器硬件环境dell普通服务器,tcp/ip协议的网络软体
linux操作系统,jdkl.42, tomcat5. 12
2、 客户端普通pc, windows xp操作系统,ie6. 0 参见图l ,图2及图3,该具体实现的过程为
在正常情况下
① 发送文件上传请求
② 服务器收到请求检索文件状态,把检索后的结果返回给断点上传控件。
③ 断点上传控件读取返回结果,如果上传完成结束。如果是新上传或上传 没有完成可以得到该文件上传起始位置。
按通用的form表单提交multipart/form-data编码方式从起始位置打 包文件。发送文件。
⑤ 服务器接受到文件,定位到文件保存位置,保存文件。
⑥ 文件接受保存完毕,更新数据库中文件记录的状态。返回给断点上传控 件文件保存完成。
⑦ 断点上传控件接受到完成信息。显示上传完成。 这样整个上传过程完成。
上传过程中,传输发生中断时断点上传控件重新发送文件上传请求,重 复上述步骤1开始的上传流程。这样就保证了文件完整正确的上传。
以上是本发明的实施方式之一,对于本领域内的一般技术人员,不花费创 造性的劳动,在上述实施例的基础上可以做多种变化,同样能够实现本发明的 目的。但是,这种变化显然应该在本发明的权利要求书的保护范围内。
权利要求
1、一种基于互联网超文本传输协议的实现文件multipart/form-data编码方式下文件的断点上传方法,其特征在于,具体步骤如下①用户登录提供上传文件服务的网站;②进入文件上传页面,启动http断点上传控件,选择需要上传的文件;③启动上传文件。http客户端给http服务器发送上传请求命令,该命令信息携带了上传文件的特征信息与用户的特征信息。包括文件名,文件大小,上传的目录,用户名以及防止恶意篡改的MD5信息等;④http客户端通过http协议发送请求数据,该过程和普通网页请求数据方式一样可以通过get或post方法;以上访问都通过web服务80端口来实现;⑤服务器收到请求后,检索该上传文件的实际上传状态,如果没有上传会创建该文件上传记录,如果以前上传过则得到该文件的存储位置及已经上传的状态及大小;然后把请求结果发送给http客户端;⑥http客户端接收服务器的请求回复,并根据该回复信息得到上传的起始位置;然后根据通用的form表单multipart/form-data编码方式从得到的文件需要发送的起始位置开始将上传文件打包并发送数据文件流体到服务器;该发送过程中同样附带了该文件的特征信息与用户信息,其发送方式一般采用post方式发送文件;⑦服务器接受到文件流体,及文件的其他信息,定位并打开该文件,同样移动写位置到文件续传的位置,在该位置保存接受的文件流数据;⑧在上传过程中如果网络中断或服务器等故障中断,文件再次上传时http客户端会重新启动步骤4开始的上传过程,并重新获得文件上传的开始位置发送文件,确保上传文件的准确性;⑨上传完成后服务器保存好该文件,然后更新该文件的数据记录为完成状态并结束整个上传过程。
2、根据权利要求1的断点上传方法,其特征在于,所述方法采用多次请 求定位需要上传的文件的起始位置,发送时从起始位置开始打包丢弃己经上传 的部分。
3、 根据权利要求1的断点上传方法,其特征在于,所述方法运行的环境 为基于tcp/ip的网络,可采用任意web服务器。
4、 根据权利要求1的断点上传方法,其特征在于,所述方法中涉及的数 据文件的请求、发送方式完全是基于http协议,数据文件报头的大小,数据 块的大小和普通的web请求完全一致;但数据的传输量没有任何限制,可以传 输任意大小的文件。
全文摘要
本发明公开了一种基于互联网超文本传输协议的实现文件multipart/form-data编码方式下文件的断点上传方法。该方法使得文件在上传过程中,利用通用的form表单multipart/form-data编码方式,自定义确认文件开始打包上传的位置,并可以使文件在上传的时候对文件流打包的开始位置进行修正,这样其就只会提供需要上传的部分文件体,对已经上传过的部分忽略,使得在不改变现有协议的前提下,客户端实现文件上传过程中的断点续传。这样可以有效解决诸如网络硬盘、相册、博客等在网络应用时,文件上传过程中由于网络中断而重新上传所引起的重复劳动和浪费时间的问题。另外,该方法的思路还可以通过Java、Delphi语言以及C++语言来具体实现。
文档编号H04L12/00GK101174954SQ20061011779
公开日2008年5月7日 申请日期2006年10月31日 优先权日2006年10月31日
发明者赵相辉 申请人:上海高勤通信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1