how to echo the number of files in a specific folder using PHP ? or the total size of all the hosted files..

I'm running a file hosting service and i'd like my visitors to see how many files are hosted ... or the total size of the hosted files using PHP ... i'm a total beginner at PHP and i have no idea how 2 do that ... if anyone could help me out i'd really appreciate it

thanks.
nkrulezAsked:
Who is Participating?
 
nanharbisonConnect With a Mentor Commented:
well, I can't build on that, I was thinking you were outputting the name of each file in the folder.
Try this, there are two functions, one returns the size of the folder, and the other makes the answer readable, instead of something like 322993445 bytes, it gives the answers in appropriate units, kb, mb, etc
<?PHP
 
function foldersize($path) {
    $total_size = 0;
    $files = scandir($path);
 
    foreach($files as $t) {
        if (is_dir($t)) { // In case of folder
            if ($t<>"." && $t<>"..") { // Exclude self and parent folder
                $size = foldersize($path . "/" . $t);
                // print("Dir - $path/$t = $size<br>\n");
                $total_size += $size;
            }
        }
        else { // In case of file
            $size = filesize($path . "/" . $t);
            // print("File - $path/$t = $size<br>\n");
            $total_size += $size;
        }   
    }
    return $total_size;
}
 
function size_readable ($size, $retstring = null) {
        // gives folder size in a readable way
        $sizes = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
        if ($retstring === null) { $retstring = '%01.2f %s'; }
        $lastsizestring = end($sizes);
        foreach ($sizes as $sizestring) {
                if ($size < 1024) { break; }
                if ($sizestring != $lastsizestring) { $size /= 1024; }
        }
        if ($sizestring == $sizes[0]) { $retstring = '%01d %s'; } // Bytes aren't normally fractional
        return sprintf($retstring, $size, $sizestring);
}
 
 $totalfoldersize = foldersize('put the actual path to the folder in here');
 $results = size_readable($totalfoldersize);
 echo $results;
?>

Open in new window

0
 
nanharbisonCommented:
Here is a class that does this:
http://tnt.goldnet.ca/tree.phps


have you used classes before?
0
 
nkrulezAuthor Commented:
i'm afraid not
0
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

 
nkrulezAuthor Commented:
i kind of figured out how 2 get the number of files ... now i just need to know how to get the total size of the files in a specific directory ....

thanks
0
 
nanharbisonCommented:
can you post your code for the number of files, so we can just build on it?
0
 
nkrulezAuthor Commented:
<?php
 $path = 'folder/';
print count(glob($path . '*.*'))
?>

simple as that :)
0
 
nkrulezAuthor Commented:
it works!! thanks alot
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.