灰儿 发表于 2017-1-6 09:32:52

PHP获取文件夹下所有子文件夹的名称及子文件夹所有图片

此段代码可显示所在文件夹和子件夹下的所有图片,代码如下

<?php
$path=".";    //当前目录
function file_list($path){
$im_type=array('bmp','jpg','jpeg','png','gif');   //初始化图片文件扩展名
    if ($handle = opendir($path)) {
      while (false !== ($file = readdir($handle))) {
            if ($file != "." && $file != "..") {
                if (is_dir($path."/".$file)) {
                  echo $path.": ".$file."<br>";      //此行代码可显示所有子文件夹名称                                       
                  file_list($path."/".$file);
                } else {
if(strpos($file,'.png',1)||strpos($file,'.jpg',1)||strpos($file,'.ico',1)||strpos($file,'.gif',1)){
echo '<img src="'.$path.'/'.$file.'" /> <br />';
    }
                }
            }
      }
    }
}
echo file_list($path);
?>

注:经测试可用,能显示所在文件夹和子件夹下的图片

scandir列目录下面的文件和目录
opendir 打开目录readdir读取目录
is_dir()判断给定文件名是否是一个目录

在PHP中 if ($file != "." && $file != "..")是什么意思

如果变量$file不是.并且不是..执行后面语句
应该用来判断目录的

灰儿 发表于 2017-1-6 17:19:27

这个用到的技术就php对文件的操作,文件遍历。这里有个我自己写当前目录和子目录文件遍历函数,代码如下。

<?php//递归遍历文件夹,输出所有文件的路径
$path = ".";      //当前目录
function bianli($path){
    static $arr=array();
    $str="";
    if($open=opendir($path)){
      while($f=readdir($open)){
            $str=$path;
            if($f!='.' && $f!='..'){
                $str=$str."/".$f;
                if(is_dir($str)){
                  $i++;                           //记录图片总张数
                  bianli($str);
                }else{
                  $arr[]=$str;
                  //echo $str."";
                }         
            }         
      }
    }
   
    return $arr;
}

//遍历文件夹,不含子目录下的文件
function search_one_file($path){
    $arr=array();
    if($open=opendir($path)){
      while($f=readdir($open)){
            if($f!='.' && $f!='..'){
                $arr[]=$path."/".$f;
            }
      }
    }
    return $arr;
}

$bianli=bianli($path);
print_r($bianli);
echo '<br>';
echo '<br>';
$search_one_file=search_one_file($path);
print_r($search_one_file);
?>

灰儿 发表于 2017-1-30 19:51:54

遍历文件夹及子文件夹所有文件 实例:

<html>
    <body>
      <?php         
$path=".";    //当前目录
            function traverse($path) {
                $current_dir = opendir($path);    //opendir()返回一个目录句柄,失败返回false
                while(($file = readdir($current_dir)) !== false) {    //readdir()返回打开目录句柄中的一个条目
                  $sub_dir = $path . DIRECTORY_SEPARATOR . $file;    //构建子目录路径
                  if($file == '.' || $file == '..') {
                        continue;
                  } else if(is_dir($sub_dir)) {    //如果是目录,进行递归
                        echo 'Directory ' . $file . ':<br>';
                        traverse($sub_dir);
                  } else {    //如果是文件,直接输出
                        echo 'File in Directory ' . $path . ': ' . $file . '<br>';
                  }
                }
            }


            traverse($path);
      ?>
    </body>
</html>


显示效果:
Directory 子目录名:
File in Directory .\子目录名: IMG_01.jpg
File in Directory .\子目录名: IMG_02.jpg
File in Directory .: IMG_1.jpg
File in Directory .: IMG_2.jpg
File in Directory .: index.php





页: [1]
查看完整版本: PHP获取文件夹下所有子文件夹的名称及子文件夹所有图片