• 技术文章 >php教程 >php手册

    PHP代码:Http断点续传的实现例子

    2016-06-13 11:40:35原创363
    PHP代码:Http断点续传的实现例子

    Copy to Clipboard引用的内容:[www.bkjia.com]
    /**

    * PHP-HTTP断点续传实现

    * @param string $path: 文件所在路径

    * @param string $file: 文件名

    * @return void

    */

    function download($path,$file) {

    $real = $path.'//m.sbmmt.com/m/'.$file;

    if(!file_exists($real)) {

    return false;

    }

    $size = filesize($real);

    $size2 = $size-1;

    $range = 0;

    if(isset($_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.'//m.sbmmt.com/m/'.$size);

    } else {

    header('Content-Length:'.$size);

    header('Content-Range: bytes 0-'.$size2.'//m.sbmmt.com/m/'.$size);

    }

    header('Accenpt-Ranges: bytes');

    header('application/octet-stream');

    header("Cache-control: public");

    header("Pragma: public");

    //解决在IE中下载时中文乱码问题

    $ua = $_SERVER['HTTP_USER_AGENT'];

    if(preg_match('/MSIE/',$ua)) {

    $ie_filename = str_replace('+','%20',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_limit(0);

    print(fread($fp,1024));

    flush();

    ob_flush();

    }

    fclose($fp);

    }

    /*End of PHP*/
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:PHP判断远程url是否有效的几种方法 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 我的论坛源代码(五)• 使用PHP4.2.0及以后版本的注意事项• php 魔术函数使用说明_php基础• php利用新浪接口查询ip获取地理位置• PHP之判断用户语言跳转网页
    1/1

    PHP中文网