关于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);
?>