PHP - Code to traverse a directory and get all the files(images)

前端 未结 10 1800
被撕碎了的回忆
被撕碎了的回忆 2021-01-27 13:00

i want to write a page that will traverse a specified directory.... and get all the files in that directory...

in my case the directory will only contain images and dis

10条回答
  •  清酒与你
    2021-01-27 13:22

    /**
    *  function get files 
    *  @param $path string = path to fine files in 
    *  @param $accept array = array of extensions to accept 
    *  @param currentLevel = 0, stopLevel = 0 
    *  @return array of madmanFile objects, but you can modify it to 
    *  return whatever suits your needs.  
    */
    
        public static function getFiles( $path = '.', $accept, $currentLevel = 0, $stopLevel = 0){
    
                $path = trim($path);                    //trim whitespcae if any
                if(substr($path,-1)=='/'){$path = substr($path,0,-1);}  //cutoff the last "/" on path if provided
                $selectedFiles = array();
                try{
                        //ignore these files/folders
                        $ignoreRegexp = "/\.(T|t)rash/";
                        $ignore = array( 'cgi-bin', '.', '..', '.svn');
                        $dh = @opendir( $path );
                        //Loop through the directory
                        while( false !== ( $file = readdir( $dh ) ) ){
                                // Check that this file is not to be ignored
                                if( !in_array( $file, $ignore ) and !preg_match($ignoreRegexp,$file)){
                                $spaces = str_repeat( ' ', ( $currentLevel * 4 ) );
                                        // Its a directory, so we need to keep reading down...
                                        if( is_dir( "$path/$file" ) ){
                                                //merge current selectFiles array with recursion return which is
                                                //another array of selectedFiles
                                                $selectedFiles = array_merge($selectedFiles,MadmanFileManager::getFiles( "$path/$file", $accept, ($currentLe$
                                        } else{
                                                $info = pathinfo($file);
                                                if(in_array($info['extension'], $accept)){
                                                        $selectedFiles[] = new MadmanFile($info['filename'], $info['extension'], MadmanFileManager::getSize($
    
                                                }//end if in array
                                        }//end if/else is_dir
                                }
                        }//end while
                        closedir( $dh );
                        // Close the directory handle
                }catch (Exception $e){
                        echo 'Caught exception: ',  $e->getMessage(), "\n";
                }
    
                return $selectedFiles;
        }
    

提交回复
热议问题