Australia's Leading Digital Marketing Experts. T. 1300 235 433  |  Aggreagtion Enquires Welcome

Print all Files From and Below a Directory With PHP

This simple files will produce a list of all files below a particular directory, and provide a link to that particular file. The first function returns an array... and the second loops through the result and creates a list.

1
<?php 
2
/*
3
    Print all files from and below a directory with PHP
4
    http://www.beliefmedia.com/code/php-snippets/print-files
5
*/
6
 
7
 
8
function beliefmedia_list_directory_array($dir = '') {
9
 
10
  /* Start directory */
11
  if ($dir == '') $dir = '.';
12
 
13
  /* Name of this file */
14
  $filename = basename($_SERVER['SCRIPT_FILENAME']);
15
 
16
  /* If invalid directory */
17
  if (!is_dir($dir)) return false;
18
 
19
  $files = array();
20
  
21
    $fh = opendir($dir);
22
    while (($file = readdir($fh)) !== false) {
23
 
24
      /* Loop through files, skipping . and .. recursing if necessary */
25
      if (strcmp($file, '.') == 0 || strcmp($file, '..') == 0) continue;
26
 
27
      if ($file != "Thumb.db" && $file != "Thumbs.db" && $file != $filename) $filepath = $dir . '/' . $file;
28
      if (is_dir($filepath)) $files = array_merge($files, beliefmedia_list_directory_array($filepath));
29
        else array_push($files, $filepath);
30
 
31
    }
32
 
33
  /* Close directory handle */
34
  closedir($fh);
35
 
36
 return (array) $files;
37
}

The second function takes the resulting array and prints a list.

1
<?php 
2
/*
3
    Print all files from and below a directory with PHP
4
    Creates a basic list of all files from array
5
    http://www.beliefmedia.com/code/php-snippets/print-files
6
*/
7
 
8
 
9
function beliefmedia_list_directory($dir = '.') {
10
  $files = beliefmedia_list_directory_array($dir);
11
  foreach($files as $file) {
12
    echo '<a href="' . $file . '">' . $file . '</a><br>';
13
  }
14
}

Usage is as follows:

1
<?php 
2
/* Usage */
3
beliefmedia_list_directory('.');

Like this article?

Share on facebook
Share on Facebook
Share on twitter
Share on Twitter
Share on linkedin
Share on Linkdin
Share on pinterest
Share on Pinterest

Leave a comment