关于PHP代码写的下载文件打不开的问题,自己备忘!(韩老师2011年的例子)

<?php

$file_name="中文.jpg";

//中文转码

$file_name=iconv("utf-8","gb2312",$file_name);

//当前文件夹下,打开down文件夹下文件

$file_path="./down/".$file_name;

//设置绝对路径时,如下,如果不加当前文件夹名“http”,死活就是提示:文件不存在

 // 为什么当时2011年视频里,就不用加呢?

//$file_path=$_SERVER['DOCUMENT_ROOT']."/http/down/".$file_name;

//-----------------------------------------------------

//此三处,最好按红字这样,如果这样,很容易不存在!!!不存在!!!不存在!!!

if(!file_exists($file_path)){      

    echo"文件不存在";   

    return;

     }

$fp=fopen($file_path,"r");

$file_size=filesize($file_path);

//--------------------------------------------------------------------------------

header("Content-type:application/octet-stream");

header("Accept-Ranges:bytes");

header("Accept-Length:$file_size");

header("Content-Disposition:attachment;filename=".$file_name);

//设置每次回送多大的数据 $buffer=1024;

//为了下载的安全,我们最好做一个文件字节读取计数器

$file_count=0;

//这句话用于判断文件是否结束

//feof:测试文件是否到了结束的位置

//这里 ($file_size-$file_count)>0)后面的两个括号极易标错,导致文件可以下载打不开

while(!feof($fp) && ($file_size-$file_count)>0){   

    $file_data=fread($fp,$buffer);    

    $file_count+=$buffer;    

    echo $file_data;

}

fclose($fp);

?>

posted @ 2017-06-05 15:11  iwango  阅读(231)  评论(0编辑  收藏  举报