最近用到PHP,因为一直在用Java开发,所以什么东西都想写成类的形式,这个PHP类主要用来处理下载任务,它掩盖了文件存放的真实路径。主要功能实现来自网络,我只是整理并添加了mime类型及下载时文件名的处理
<?php
class Download
{
var $cache_size=1024;
function Download(){}
//文件的相对路径
function _dl_($path)
{
$full_path=getcwd().$path;
if(!file_exists($full_path)){
echo "File Not Find.";
exit;
}else{
$handle=fopen($full_path,"rb");
Header("Content-type:".$this->getmimetype($full_path));
Header("Accept-Ranges:bytes");
Header("Accept-Length:".filesize($full_path));
$infos=pathinfo($full_path);
Header("Content-Disposition:attachment;filename=".$infos["basename"]);
while(!feof($handle)){
echo fread($handle,$this->cache_size);
}
fclose($handle);
exit;
}
}
function getmimetype($path){
$mimeArray=array();
$mimeArray["zip"]="application/zip";
$mimeArray["wav"]="audio/x-wav";
$mimeArray["xml"]="application/xml";
$mimeArray["txt"]="text/plain";
$mimeArray["tar"]="application/x-tar";
$mimeArray["swf"]="application/x-shockwave-flash";
$mimeArray["rm"]="application/vnd.rn-realmedia";
$mimeArray["pdf"]="application/pdf";
$mimeArray["mp3"]="audio/x-mpeg";
$mimeArray["mid"]="audio/x-midi";
$mimeArray["js"]="text/javascript";
$mimeArray["jad"]="text/vnd.sun.j2me.app-descriptor";
$mimeArray["gz"]="application/x-gzip";
$mimeArray["gtar"]="application/x-gtar";
$mimeArray["exe"]="application/octet-stream";
$mimeArray["doc"]="application/msword";
$mimeArray["rar"]="application/octet-stream";
$infos=pathinfo($path);
return $mimeArray[$infos["extension"]];
}
}
?>
//使用此类
<?php
$dl=new Download();
$dl->_dl_("/a/b/c/a.doc");
?>