/*********************************************************************************
* 目录及文件遍历类
*-------------------------------------------------------------------------------
*初级版本,偶的小博客后续根据时间和使用 会逐步改善这些类
*另外推荐大家可以使用 InitPHP 2.0 国产PHP开发框架 link : http://www.initphp.com
*-------------------------------------------------------------------------------
* $Author:liuxinming
* $Dtime:2012-06-23
***********************************************************************************/
class getfiles{
/*
* 目录
*/
private $path;
/*
* 类型
* @param $typeimg 图片格式
* @param $typeflash
* @param $typesp 视频格式
* @param $typetext 文本格式
* @param $typeplay 播放媒体格式
* 根据需求可以自己增加格式
*/
private $typeimg=',.jpg,.gif,.png,.bmp,.jpeg,';
private $typeflash=',.swf,.flv,.dcr,';
private $typesp=',.wmv,.asf,.wma,.mp3,.asx,.mid,.midi,';
private $typetext=',.txt,.doc,.exl,';
private $typeplay=',.rm,.ra,.rmvb,.mp4,.mov,.avi,.wav,.ram,.mpg,.mpeg,';
/**
* 构造函数
*/
function __construct($path){
$this->path=$path;
}
/**
* 取得文件扩展名
*/
function GetFiletype($filename){
$filer=explode(".",$filename);
$count=count($filer)-1;
return strtolower(".".$this->RepGetFiletype($filer[$count]));
}
/**
*
*/
function RepGetFiletype($filetype){
$filetype=str_replace('|','_',$filetype);
$filetype=str_replace(',','_',$filetype);
$filetype=str_replace('.','_',$filetype);
return $filetype;
}
/**
* 文件大小格式转换
* @param string $filesize
*/
function pathFilesize($size){
if($size>=1024*1024){//MB
//函数通过千位分组来格式化数字
$filesize=number_format($size/(1024*1024),2,'.','')." MB";
}else if($size>=1024){//KB
$filesize=number_format($size/1024,2,'.','')." KB";
}else{
$filesize=$size." Bytes";
}
return $filesize;
}
/**
* 遍历目录及文件并echo 输出
*
*/
function getfiles(){
$path=$this->path;
//检查指定的文件或目录是否存在
if(!is_dir($path)) continue;
//打开目录 句柄
$dir=opendir($path);
while(($file=readdir($dir))!=false){
if($file=='.' || $file=='..'){
continue;
}
if($file!='.' || $file!='..'){
//目录
$pathfile=$path.'/'.$file;
if(is_dir($pathfile)){//此分支输出目录
$filename=$file;
//发布时间
$filetime=@filemtime($pathfile);
$filetime=date("Y-m-d H:i:s",$filetime);
$filesize='<目录>';
$filetype='文件夹';
}else{//此分支输出文件
$filename=$file;
$ftype=$this->GetFiletype($file);
//发布时间
$filetime=@filemtime($pathfile);
$filetime=date("Y-m-d H:i:s",$filetime);
//文件大小
$fsize=@filesize($pathfile);
$filesize=$this->pathFilesize($fsize);
//文件类型
if(strstr($this->typeimg,','.$ftype.','))
{
$filetype='图片';
}
elseif(strstr($this->typeflash,','.$ftype.','))
{
$filetype='FLASH';
}
elseif(strstr($this->typesp,','.$ftype.',')||strstr($typeplay,','.$ftype.','))
{
$filetype='视频';
}elseif(strstr($this->typetext,','.$ftype.',')){
$filetype='文本';
}
else
{
$filetype='附件';
}
}
$table='<table width="100%" border="0" align="center" cellpadding="3" cellspacing="1">';
$tr='<tr>';
$tr1='</tr>';
$table1='</table>';
$td=$tr.'<td width=50%>'.$filename.'</td><td width=20%>'.$filetype.'</td>'.'</td><td width=20%>'.$filesize.'</td>'.$tr1;
echo $return=$table.$td.$table1;
}else{
continue;
}
}
}
}
使用方法:
$path='/var/www/lxm/ecms';
$files=new getfiles($path);
$files->getfiles();
运行后效果图: