使用php实现下载断点续传,$_SERVER['HTTP_RANGE']为空。求助
我想使用php实现一个下载断点续传的功能,知道要使用http_range来标记每次下载的进度,但是print $_SERVER['HTTP_RANGE']发现值为空,怀疑是不是我的server不支持断点续传啊?不知道我的理解对不对。请大家多多指教
public function downpiceAction(){ $durl = ROOT_DIR.'/static/mysql-5.5.21.tar.gz'; $filename = 'mysql-5.5.21.tar.gz'; header("Content-Type:application/x-tar"); header("Accept-Ranges:bytes"); header("Content-Disposition:attachment;filename=".$filename); file_put_contents('ddd',$_SERVER['HTTP_RANGE']); $size = filesize($durl); print_r($_SERVER); if(isset($_SERVER['HTTP_RANGE'])){ list($a, $range) = explode("=", $_SERVER['HTTP_RANGE']); str_replace($range, "-", $range); $size2 = $size -1; $new_length = $size2 - $range; header("HTTP/1.1 206 Partial Content"); header("Content-Length: $new_length"); header("Content-Range: bytes $range$size2/$size"); }else{ $size2 = $size -1; header("Content-Range: bytes 0-$size2/$size"); header("Content-Length: " . $size); } $fp = fopen("$durl", "rb"); fseek($fp, $range); while (!feof($fp)) { //设置文件最长执行时间 set_time_limit(0); print (fread($fp, 1024 * 8)); //输出文件 flush(); //输出缓冲 ob_flush(); } fclose($fp); exit (); Yaf_Dispatcher::getInstance()->autoRender(FALSE); }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
$range$size2/$size
你觉得这句话对吗?
-----
range是会返回3种头部的哦:
你这段代码都能适应吗?
-----
乱炖 - 研究web
http://levi.cg.am
说了多次哦,我不懂php的
@红薯 你是万能的。。。
回复
去学习
@红薯 @
雪候鸟 @
rocing 蝈蝈。。求助。。