加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读