文件下载【PHP】

简单实现PHP控制文件下载;
调用方式:http://127.0.0.1/temp/index.php?id=c479ec02fec10bbd8af1568b197b19aa

<?php
if(isset($_GET['id'])){
	#清除文件状态缓存
	clearstatcache();
	#文件储存目录
	$file_path = dirname(__FILE__).'/upload/';
	#文件名符号必须为英文半角
	$file_list = array(
			'c479ec02fec10bbd8af1568b197b19aa' => '123.doc',
			'47eb4fe400e2eef3f8a404ad3ce3e33f' => '456.doc',
			'5cd8cb481b2571dd443675eb8253592c' => '789.doc',
		);
	#检查id是否在指定的列表中
	if(array_key_exists($_GET['id'],$file_list)){
		#文件名
		$file_name = iconv('UTF-8','GB2312',$file_list[$_GET['id']]);
		#文件路径
		$file_path .= $file_name;
		#检查目录文件是否存在并输出
		if(file_exists($file_path)){
			header('Content-Description:FileTransfer');
			header('Content-Type:application/octet-stream');
			header('Content-Disposition:attachment;filename='.$file_name);
			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();
			flush();
			readfile($file_path);
			exit;
		}
	}
}
?>

你可能感兴趣的:(PHP,下载,乱码,缓存,文件)