[发明专利]文件上传的方法、客户端、服务器及系统无效
申请号: | 201010606755.8 | 申请日: | 2010-12-16 |
公开(公告)号: | CN102571709A | 公开(公告)日: | 2012-07-11 |
发明(设计)人: | 李星;徐盎;徐伟 | 申请(专利权)人: | 腾讯科技(北京)有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L29/08 |
代理公司: | 北京三高永信知识产权代理有限责任公司 11138 | 代理人: | 何文彬 |
地址: | 100089 北京市海淀区海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 文件 上传 方法 客户端 服务器 系统 | ||
技术领域
本发明涉及文件上传领域,特别涉及一种文件上传的方法、客户端、服务器及系统。
背景技术
当今社会的人们在工作、学习和生活时,常常使用各种文件上传系统上传文件,例如,用户向电子邮件中上传附件,向相册上传照片,或者向网盘上传资料等,都需要使用文件上传系统。
目前大多数文件上传系统在处理用户上传的文件的时候,会先查找自己的服务器上的文件的MD5(Message Digest Algorithm 5,消息摘要算法第五版)值中,是否存在与待上传文件的MD5值相同的MD5值:如果存在,说明服务器上有该文件,就不需要再上传该文件,直接使用服务器上已经存在的文件即可,并通知用户上传文件成功;如果不存在,说明服务器上没有与待上传文件相同的文件,那么全量上传用户的文件,并保存在服务器上。文件上传系统采用这种机制可以针对完全相同的文件(即MD5值相同的文件)来进行优化,当用户上传相同的文件时,能够减少网络传输量和用户等待时间。
在实现本发明的过程中,发明人发现现有技术至少存在以下缺点:
在现实生活中,用户上传的大量文件往往具有很大的相似性,例如,修改了近十稿的毕业论文,每次修改的内容都很少,又例如,在视频网站上用户在上传视频的时候,同一个的视频的精彩部分可能被不同的用户剪辑了多个版本,这些不同版本的视频片段之间的相似度也非常大。当用户向服务器上传与之前上传的文件相近似的文件的时候,由于这些文件并不完全相同,每次都需要全量上传,造成网络传输量大和用户等待时间长的缺陷。
发明内容
为了实现文件的高效上传,减少用户上传文件时的网络传输量和等待的时间,本发明实施例提供了一种文件上传的方法、客户端、服务器及系统。所述技术方案如下:
一方面,提供了一种文件上传的方法,所述方法包括:
接收客户端发送的文件上传请求;
判断是否有与待上传文件的消息摘要算法第五版MD5值相同的文件,如果是,则使用所述MD5值相同的文件作为所述待上传文件,否则,
判断所述客户端以前上传的文件中,是否存在与所述待上传文件的文件名相同的文件,
如果是,则计算出所述待上传文件与所述文件名相同的文件的不同部分,并使所述客户端上传所述不同部分,否则,
使所述客户端全量上传所述待上传文件。
其中,所述计算出所述待上传文件与所述文件名相同的文件的不同部分,具体包括:
采用远程同步Rsync算法计算出所述待上传文件与所述文件名相同的文件的不同部分。
相应地,所述采用远程同步Rsync算法计算出所述待上传文件与所述文件名相同的文件的不同部分,具体包括:
由所述客户端将所述待上传文件分割成一组不重叠的固定大小的数据块,并对每个数据块执行32位的滚动弱校验和128位的消息摘要算法第四版MD4强校验,得到所述每个数据块的弱校验码和强校验码;
获取所述每个数据块的弱校验码和强校验码,并扫描所述文件名相同的文件,找到与所述待上传文件的弱校验码和强校验码中的至少一项不同的数据块。
进一步地,所述接收客户端发送的上传文件请求之后,还包括:
校验待上传文件的参数和安全性是否符合要求,如果是,则执行所述判断是否有与待上传文件的消息摘要算法第五版MD5值相同的文件的步骤,否则,向所述客户端返回错误信息。
更进一步地,所述判断是否存在与待上传文件的消息摘要算法第五版MD5值相同的文件之前,还包括:
计算待上传文件的消息摘要算法第五版MD5值。
另一方面,提供了一种文件上传的客户端,所述客户端包括:
发送模块,用于向服务器发送文件上传请求;
部分上传模块,用于在所述发送模块向所述服务器发送文件上传请求后,当所述服务器判断所述客户端以前上传的文件中,存在与待上传文件的文件名相同的文件时,向所述服务器上传所述待上传文件与所述文件名相同的文件的不同部分;
全量上传模块,用于在所述发送模块向所述服务器发送文件上传请求后,当所述服务器判断所述客户端以前上传的文件中,不存在与所述待上传文件的文件名相同的文件时,向所述服务器全量上传所述待上传文件。
进一步地,所述客户端还包括:
分割模块,用于在所述部分上传模块向所述服务器上传所述待上传文件与所述文件名相同的文件的不同部分之前,将所述待上传文件分割成一组不重叠的固定大小的数据块;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(北京)有限公司,未经腾讯科技(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010606755.8/2.html,转载请声明来源钻瓜专利网。