php 实现文件下载

//author:heaven//文件下载function
download($file_dir,$file_name)//参数说明://file_dir:文件所在目录//file_name:文件名{
$file_dir = chop($file_dir);//去掉路径中多余的空格
//得出要下载的文件的路径 if($file_dir != ”) { $file_path =
$file_dir;
if(substr($file_dir,strlen($file_dir)-1,strlen($file_dir)) != ‘/’)
$file_澳门新葡亰3522平台游戏,path .= ‘/’; $file_path .= $file_name; } else $file_path =
$file_name;

//判断要下载的文件是否存在 if(!file_exists($file_path)) { echo
‘对不起,你要下载的文件不存在。’; return false; }

$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); //echo
file_get_contents($file_path); $fp = fopen($file_path,r);
$buffer_size = 1024; $cur_pos = 0;
while(!feof($fp)$file_size-$cur_pos$buffer_size) { $buffer =
fread($fp,$buffer_size); echo $buffer; $cur_pos += $buffer_size; }
$buffer =@fread($fp,$file_size-$cur_pos); echo $buffer; fclose($fp);
return true;

}

页面处理部分

$dir = ../main/trade_log; // Open a known directory, and proceed to
read its contents if (is_dir($dir)){ $filename=array(); if ($dh =
opendir($dir)) { while (($file = readdir($dh)) !== false){ if ($file!=.
$file!=.. $file!=.svn){

$filename[]=$file;} } closedir($dh); } }

if(isset($_GET[‘logname’])){

download(../main/trade_log,$_GET[‘logname’]); exit;

}$smarty-assign(trade_log_list,$filename);

注意这块

download(../main/trade_log,$_GET[‘logname’]); exit;

一定要加exit

否则下载的文件display的部分也要输出