zoukankan      html  css  js  c++  java
  • 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;

        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.'/'.$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'];

        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*/

  • 相关阅读:
    HQL语句中类的别名语法以及作用?
    C#面向对象
    c#异步编程一
    c#接口
    c#Socket通信基本使用
    c#FTP基本使用
    c#XML的基本使用
    c#装箱与拆箱
    c#数组与集合
    c#中for与foreach的使用
  • 原文地址:https://www.cnblogs.com/myblog1314/p/3101286.html
Copyright © 2011-2022 走看看