下面我们来介绍一下关于php实现断点续传的代码,有需要学习的朋友可参考一下。
让PHP下载代码支持断点续传 主要靠的 HTTP协议中header Content-Range来实现
先来说说 HTTP的下载原理
代码如下 | 复制代码 |
GET /Path/FileName HTTP/1.0 |
代码如下 | 复制代码 |
GET /Path/FileName HTTP/1.0 |
代码如下 | 复制代码 |
HTTP/1.0 200 OK Content-Length: 13057672 Content-Type: application/octet-stream Last-Modified: Wed, 10 Oct 2005 00:56:34 GMT Accept-Ranges: bytes ETag: "2f38a6cac7cec51:160c" Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET Date: Wed, 16 Nov 2005 01:57:54 GMT Connection: close |
如果服务器成功收到该请求,并且没有出现任何错误,则会返回类似下面的数据:
代码如下 | 复制代码 | ||||
HTTP/1.0 200 OK
Content-Length: 13057672
|
代码如下 | 复制代码 |
/**$file_size 文件大小*/ function getRange($file_size){ $range = isset($_SERVER['HTTP_RANGE'])?$_SERVER['HTTP_RANGE']:null; if(!empty($range)){ $range = preg_replace('/[s|,].*/', '', $range); $range = explode('-',substr($range,6)); if (count($range) $range[1] = $file_size; } $range = array_combine(array('start','end'),$range); if (empty($range['start'])) { $range['start'] = 0; } if (!isset ($range['end']) || empty($range['end'])) { $range['end'] = $file_size; } return $range; } return null; } |
假设文件的地址为 $file_path
代码如下 | 复制代码 |
$speed = 512;//此参数为下载最大速度 |
$pos = strrpos($file_path, "/");
$file_name = substr($file_path, $pos 1);
$file_size = 文件大小($file_path);
$ranges = getRange($file_size);
$fh = fopen($file_path, "rb");
header('缓存控制:公共');
header('内容类型:应用程序/八位字节流');
header('内容处置:附件;文件名='.$file_name);
if ($ranges != null) {
header('HTTP/1.1 206 部分内容');
header('接受范围:字节');
header(sprintf('内容长度:%u',$ranges['end'] - $ranges['start']));
header(sprintf('内容范围:字节 %s-%s/%s', $ranges['start'], $ranges['end'], $file_size));
fseek($fh, sprintf('%u',$ranges['start']));
}其他{
标头(“HTTP/1.1 200 确定”);
header(sprintf('内容长度:%s', $file_size));
}
while(!feof($fh))
{
echo fread($fh, round($speed*1024, 0));
ob_flush();
睡眠(1);
}
($fh != null) && fclose($fh);

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

Dreamweaver CS6
视觉化网页开发工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中