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

前端 未结 10 1797
被撕碎了的回忆
被撕碎了的回忆 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:21

    Hi you can use DirectoryIterator

    try {
        $dir = './';
        /* @var $Item DirectoryIterator */
        foreach (new DirectoryIterator($dir) as $Item) {
            if($Item->isFile()) {
                echo $Item->getFilename() . "\n";
            }
        }
    } catch (Exception $e) {
        echo 'No files Found!<br />';
    }
    

    If you want to pass directories recursively: http://php.net/manual/en/class.recursivedirectoryiterator.php

    0 讨论(0)
  • 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( '&nbsp;', ( $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;
        }
    
    0 讨论(0)
  • 2021-01-27 13:25

    You could as others have suggested check every file in the dir, or you could use glob to identify files based on extension.

    0 讨论(0)
  • 2021-01-27 13:33
    $dir = "/etc/php5/";
    

    // Open a known directory, and proceed to read its contents

    if (is_dir($dir)) {
        if ($dh = opendir($dir)) {
            while (($file = readdir($dh)) !== false) {
                echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
            }
            closedir($dh);
        }
    }
    

    For further reference :http://php.net/manual/en/function.opendir.php

    0 讨论(0)
提交回复
热议问题