实现搜索文件的功能需要用到php中的几个函数:is_dir(),opendir(),readdir(),closedir
要查找文件,首先得确定文件的路径,定义为$path;
提供了$path后要判断该路径是否有效,使is_dir()来进行判断,返回true;
确定了文件路径,就打开路径,opendir($path),如果成功则返回目录句柄的 resource,失败则返回 FALSE。
(如果 path 不是一个合法的目录或者因为权限限制或文件系统错误而不能打开目录,opendir() 返回 FALSE 并产生一个 E_WARNING 级别的 PHP 错误信息。可以在 opendir() 前面加上“@”符号来抑制错误信息的输出。)
打开了路径就开始读取里面的文件,使用readdir(),readdir — 从目录句柄中读取条目,返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。
<?php
/*
类document主要用于实现获取指定文件夹下的所有文件,并将这些文件存储到数组中返回
*/
class document{
private $file_array=array();
private $folder_array=array();
private $all_array=array();
function fetch($dir){
$H=opendir($dir);
while(false!==($_file=readdir($H))){
if(is_dir($dir."/".$_file)&&$_file!="."&&$_file!==".."&&$_file!=="Thumbs.db"){
array_push($this->folder_array,$dir."/".$_file);
$this->fetch($dir."/".$_file);
}elseif(is_file($dir."/".$_file)&&$_file!="."&&$_file!==".."&&$_file!=="Thumbs.db"){
array_push($this->file_array,$dir."/".$_file);
}
}
closedir($H);
$this->all_array["folder"]=$this->folder_array;
$this->all_array["file"]=$this->file_array;
return $this->all_array;
}
}
/*
实现下载文件的显示
*/
$d=new document();
$f=$d->fetch("E:/temp/"); //搜索指定目录下的文件,..表示当前目录
//print_r($f["folder"]); //返回所有文件夹的数组
//print_r($f["file"]); //返回所有文件的数组
$ff=$f["file"];
$sum=count($ff); //计算有多少个文件
for($i=0;$i<$sum;$i++){
echo "<tr><td>".$ff[$i]."</td><td><a href='download_1.php'?title=".$ff[$i]."'>下载</a></td></tr><br>";
//echo "<a href='FileDownload_1.php'?title='".$ff[$i]."'>下载</a>";
}
?>
句柄:
句柄是指使用的一个唯一的整数值,是指一个四字节长的数值,用于标志应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等,应用程序能够通过句柄访问相应的对象的信息。
Thumbs.db:
Thumbs.db文件是一个数据库,里面保存了这个目录下所有图像文件的缩略图(格式为jpeg)。当以缩略图查看时(展示一幅图片或电影胶片) ,将会生成一个Thumbs.db文件。
检查文件是否存在,可以用file_exists()函数