PHP是一种通用开源脚本语言。本文实例讲述了PHP实现HTTP断点续传的方法。分享给大家供大家参考。 具体实现方法如下:PHP实现HTTP断点续传方法,供大家参考。
PHP是一种通用开源脚本语言。本文实例讲述了PHP实现HTTP断点续传的方法。分享给大家供大家参考。
具体实现方法如下:
<?php
/**
* PHP-HTTP断点续传实现
* @param string $path: 文件所在路径
* @param string $file: 文件名
* @return void
*/
function download$path,$file
$real = $path.'/'.$file;
if!file_exists$real
return false;
$size = filesize$real;
$size2 = $size-1;
$range = 0;
ifisset$_SERVER['HTTP_RANGE']
header'HTTP /1.1 206 Partial Content';
$range = str_replace'=','-',$_SERVER['HTTP_RANGE'];
$range = explode'-',$range;
$range = trim$range[1];
header'Content-Length:'.$size;
header'Content-Range: bytes '.$range.'-'.$size2.'/'.$size;
else
header'Content-Length:'.$size;
header'Content-Range: bytes 0-'.$size2.'/'.$size;
header'Accenpt-Ranges: bytes';
header'application/octet-stream';
header"Cache-control: public";
header"Pragma: public";
//解决在IE中下载时中文乱码问题
$ua = $_SERVER['HTTP_USER_AGENT'];
ifpreg_match'/MSIE/',$ua
$ie_filename = str_replace'+','',urlencode$file;
header'Content-Dispositon:attachment; filename='.$ie_filename;
else
header'Content-Dispositon:attachment; filename='.$file;
$fp = fopen$real,'rb+';
fseek$fp,$range;
while!feof$fp
set_time_limit0;
printfread$fp,1024;
flush;
ob_flush;
fclose$fp;
推荐访问: