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;*/
    }
  • 相关阅读:
    新增数据盘
    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
    将tomcat的protocol改为APR模式,以提高性能
    POJ 2195 Going Home (最小费用最大流)
    HDU 2732 Leapin' Lizards (最大流)
    POJ 2516 Minimum Cost (最小费用最大流)
    POJ 1087 A Plug for UNIX (最大流)
    POJ 3281 Dining (最大流)
    HDU 3605 Escape (最大流)
    POJ 1149 PIGS (最大流)
  • 原文地址:https://www.cnblogs.com/The-second/p/6104193.html
Copyright © 2011-2022 走看看