zoukankan      html  css  js  c++  java
  • php 文件限速下载代码

    <?php
    include("DBDA.class.php");
    $db = new DBDA();
    $bs = $_SERVER["QUERY_STRING"];  //获取由提交界面传过来的参数
    $bss = substr($bs,3);  //截取 = 后面的值
    
    $sql = "select video from shangpin where id='{$bss}'";  //获取视频文件路径
    $str = $db->StrQuery($sql);
    $wjm = substr($str,13);  //截取文件名
    $lj = substr($str,0,13);  //截取文件所在文件夹路径
    
     
    
    $file_name = $wjm;   //文件名
    //用以解决中文不能显示出来的问题  
    $file_name=iconv("utf-8","gb2312",$file_name);  
    $file_sub_path=$_SERVER['DOCUMENT_ROOT'].$lj;   //获取当前运行脚本所在的文档根目录
    $file_path=$file_sub_path.$file_name;   //拼成一个完整的文件所在的路径
    
    // $file = include path
    if(file_exists($file_path))  //判断文件是否存在
    {
        header('Content-Description: File Transfer');       //header函数是提交给表头的是一些下载的规格
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($file_path));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file_path));
        ob_clean();   //ob_clean这个函数的作用就是用来丢弃输出缓冲区中的内容,如果你的网站有许多生成的文件,那么想要访问正确,就要经常清除缓冲区
        flush();   //ob_flush()和flush()的区别。前者是把数据从PHP的缓冲中释放出来,后者是把不在缓冲中的或者说是被释放出来的数据发送到浏览器。所以当缓冲存在的时候,我们必须ob_flush()和flush()同时使用。
        
        $file = fopen($file_path, "r");  //打开指定的文件,r 代表只读,如果找不到,返回false
        while(!feof($file))  //判断是否存在
        {
            // send the current file part to the browser
            print fread($file, round(3000 * 1024));  //先顶下载速度为3MB
            // flush the content to the browser
            flush();  //传给浏览器
            // sleep one second
            sleep(1);  //等待1秒
        }
        fclose($file);  //关闭文件
        
        /*readfile($file_path);  //也可以用这种方法,发送完表头直接输出,不过没有限速
        exit;*/
    }
  • 相关阅读:
    MSSQL大量数据时,建立索引或添加字段后保存更改超时该这么办
    POJ 3261 Milk Patterns (后缀数组)
    POJ 1743 Musical Theme (后缀数组)
    HDU 1496 Equations (HASH)
    694. Distinct Substrings (后缀数组)
    POJ 1222 EXTENDED LIGHTS OUT (枚举 或者 高斯消元)
    POJ 1681· Painter's Problem (位压缩 或 高斯消元)
    POJ 1054 The Troublesome Frog (hash散列)
    HDU 1716 排列2
    HDU 4405 Aeroplane chess (概率DP & 期望)
  • 原文地址:https://www.cnblogs.com/zxl89/p/6130252.html
Copyright © 2011-2022 走看看