PHP简单实现图片库,获取目录下的文件

scandir() 函数返回指定目录中的文件和目录的数组,这里我主要使用scandir实现图片库。

语法

scandir(directory,sorting_order,context);

参数描述
directory 必需。规定要扫描的目录。
sorting_order 可选。规定排列顺序。默认是 0,表示按字母升序排列。如果设置为 SCANDIR_SORT_DESCENDING 或者 1,则表示按字母降序排列。如果设置为 SCANDIR_SORT_NONE,则返回未排列的结果。
context 可选。规定目录句柄的环境。context 是可修改目录流的行为的一套选项。
    //图片库
    public function photo_gallery(){
        $C_Patch=$_SERVER['DOCUMENT_ROOT']; //获取网站根目录
        $hostdir=$C_Patch.'/uploads'; //要读取的文件夹
        /*$filesnames = scandir($hostdir); //得到所有的文件
        $url =  $_SERVER["HTTP_HOST"];//获取网址*/

        //获取所有图片
        $files = array();
        $array =  $this->getDir2($hostdir, $files);

        return json($array);
    }


    //获取目录或子目录的图片
    public function getDir2($path,&$array)
    {
        if (is_dir($path)) {
            $dir = array_reverse(scandir($path));//获取“/uploads”目录下的所有文件,并进行倒序
            foreach ($dir as $value) {
                //目录名:$value,路径:$path
                $sub_path = $path . '/' . $value;
                //scandir默认有“.”,“..”\
                if ($value == '.' || $value == '..') {
                    continue;

                }  //判断是否目录
                else if (is_dir($sub_path)) {
                    //排除不需要的目录
                    if (preg_match("/([\x81-\xfe][\x40-\xfe])/", $sub_path, $match) || $value == "payUpload") {
                        continue;
                    }

                    //循环,获取子目录的文件
                    $this->getDir2($sub_path, $array);
                } else {
                    //.$path:路径,$value:文件名
                    $image_arr2 = explode(".",$value);//获取后缀名
                    $path_arr = explode('uploads/',$path);//获取当前文件所在的文件夹
                    if (!empty($image_arr2[1])) {
                        //获取需要的文件,判断是否图片
                        if ($image_arr2[1] == "gif" || $image_arr2[1] == "png" || $image_arr2[1] == "jpg" || $image_arr2[1] == "jpeg" || $image_arr2[1] == "bmp") {
//                            $array[end($path_arr)][] = $value;
                            $array[] = end($path_arr).'/'.$value;
                        }
                    }
                }
            }
        }
        return $array;
    }

 

 

 

php获取目录下所有文件及目录(多种方法):https://www.jb51.net/article/161203.htm

posted @ 2020-12-19 18:16  不睡  阅读(584)  评论(0编辑  收藏  举报