解决方案 »

  1.   

    ob_clean();
        flush();
        readfile($file);
      

  2.   

        header("Content-Transfer-Encoding: binary");
        header("Content-Length: ".$len);
    这俩删掉试试
      

  3.   


    $len = filesize($file);
    header("Content-Length: ".$len);
    上面2句删除后可以下载,但没统计文件大小,迅雷和IE没显示下载时长。
      

  4.   

    nginx + php 环境下 没有你说的那个问题,ie和迅雷都可以正常下载 不过我的文件是flv,这样的话也只能说明是mime头出错了
    我的代码如下:function dl_file($file){
        $len = filesize($file);
        $filename = basename($file);
        $file_extension = strtolower(substr(strrchr($filename,"."),1));
        switch( $file_extension ) {
        case "mp4": $ctype="video/mp4"; break;
        default: $ctype="application/force-download";
        }
        header("Pragma: public");
        header("Expires: 0");
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Cache-Control: public"); 
        header("Content-Description: File Transfer");
        header("Content-Type: $ctype");
        $header="Content-Disposition: attachment; filename=".$filename."";
        header($header );
        header("Content-Transfer-Encoding: binary");
        header("Content-Length: ".$len);
        ob_clean();
        flush();
        readfile($file);
        exit;
    }
    dl_file('http://res.805.com/videos/霍山·上林后苑(易仟亿集团) [640x480].flv'); 只改了一个文件名而已  其他的都没变
      

  5.   

    没测试过 应该有吧 有"Content-Length头的
      

  6.   

    博客看看
    http://www.jb51.net/article/46440.htm