php断点续传的原理是什么?如何用断点续传大文件?
发布时间:2021-12-23 16:55:39 所属栏目:PHP教程 来源:互联网
导读:php断点续传的原理是什么?有些朋友可能知道php断点续传,但是对于其原理并不清楚,因此这篇文章就给大家介绍一下php断点续传的原理,以及怎样用断点续传大文件,感兴趣的朋友可以看一下。 一、断点续传原理 所谓断点续传,也就是要从文件已经下载的地方开始
php断点续传的原理是什么?有些朋友可能知道php断点续传,但是对于其原理并不清楚,因此这篇文章就给大家介绍一下php断点续传的原理,以及怎样用断点续传大文件,感兴趣的朋友可以看一下。 一、断点续传原理 所谓断点续传,也就是要从文件已经下载的地方开始继续下载。在以前版本的 HTTP 协议是不支持断点的,HTTP/1.1 开始就支持了。一般断点下载时才用到 Range 和 Content-Range 实体头。 不使用断点续传 get /down.zip http/1.1 accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms- excel, application/msword, application/vnd.ms-powerpoint, */* accept-language: zh-cn accept-encoding: gzip, deflate user-agent: mozilla/4.0 (compatible; msie 5.01; windows nt 5.0) connection: keep-alive 服务器收到请求后,按要求寻找请求的文件,提取文件的信息,然后返回给浏览器,返回信息如下: HTTP/1.1 200 Ok content-length=106786028 accept-ranges=bytes date=mon, 30 apr 2001 12:56:11 gmt etag=w/"02ca57e173c11:95b" content-type=application/octet-stream server=microsoft-iis/5.0 last-modified=mon, 30 apr 2001 12:56:11 gmt 使用断点续传 GET /down.zip HTTP/1.0 User-Agent: NetFox RANGE: bytes=2000070- Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 多了这么一行Range: bytes=2000070- 这一行的意思就是告诉服务器down.zip这个文件从2000070字节开始传,前面的字节不用传了。 Range的完整格式是: Range: bytes=startOffset-targetOffset/sum [表示从startOffset读取,一直读取到targetOffset位置,读取总数为sum直接] Range: bytes=startOffset-targetOffset [字节总数也可以去掉] 服务器收到这个请求以后,返回的信息如下: HTTP/1.1 206 Partial Content content-length=106786028 content-range=bytes 2000070-106786027/106786028 date=mon, 30 apr 2001 12:55:20 gmt etag=w/"02ca57e173c11:95b" content-type=application/octet-stream server=microsoft-iis/5.0 last-modified=mon, 30 apr 2001 12:55:20 gmt (编辑:常州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |