PHP文件夹内的文件计数

时间:2016-07-21 08:41:16

标签: php

我正在使用引导程序表和行来计算文件夹中的文件数量,但目标指向不同的服务器,下面的代码不起作用。 因为我正在使用localhost(xampp)尝试这样做,所以不知道它是否可能。

<?php 
// integer starts at 0 before counting
$i = 0; 
$dir = 'uploads/'; <!--\\189.207.00.122\folder1\folder2\folder3\test-->
if ($handle = opendir($dir)) {
while (($file = readdir($handle)) !== false){
if (!in_array($file, array('.', '..')) && !is_dir($dir.$file)) 
$i++;
}
}
// prints out how many were in the directory
echo "There were $i files";
?>

2 个答案:

答案 0 :(得分:0)

使用$_SERVER['DOCUMENT_ROOT']获取根目录。

$dir = $_SERVER['DOCUMENT_ROOT'].'/uploads/';

答案 1 :(得分:0)

这是一个你可能想要尝试的方便的小功能。只需将path to the Directory作为第一个参数传递给它,就可以获得结果。

注意: 此函数是RECURSIVE,这意味着:它将遍历所有子目录...以禁用此行为,只需注释掉或删除以下行到结尾功能:

<?php
            }else if(is_dir($temp_file_or_dir) && !preg_match('/^\..*/', $val) ){
                getFilesInFolder($temp_file_or_dir);
            }

代码:

<?php
    $folder = dirname(__FILE__).'/uploads';      // ASSUMES YOUR uploads DIRECTORY 
                                                 // IS IN THE SAME DIRECTORY AS index.php
                                                 // (/htdocs/php/pages)

    // OR
    $folder = dirname(__FILE__).'/../uploads';   // ASSUMES YOUR uploads DIRECTORY
                                                 // IS ONE DIRECTORY ABOVE
                                                 // THE CURRENT DIRECTORY (/htdocs/php)
                                                 // THIS IS MOST LIKELY RIGHT 
    // OR
    $folder = dirname(__FILE__).'/../../uploads';// ASSUMES YOUR uploads DIRECTORY
                                                 // IS TWO DIRECTORIES ABOVE
                                                 // THE CURRENT DIRECTORY (/htdocs)

    // MAKE SURE THE FOLDER IN QUESTION HAS THE RIGHT PERMISSIONS
    // OR RATHER CHANGE PERMISSIONS ON THE FOLDER TO BE ABLE TO WORK WITH IT
    chmod($folder, 0777);

    var_dump(getFilesInFolder($folder));


    // IF YOU PASS false AS THE THE 2ND ARGUMENT TO THIS FUNCTION
    // YOU'D GET AN ARRAY OF ALL FILES IN THE $path2Folder DIRECTORY
    // AS WELL AS IN SUB-DIRECTORIES WITHIN IT...
    function getFilesInFolder($path2Folder, $countOnly=true){
        $files_in_dir   = scandir($path2Folder);
        $returnable     = array();

        foreach($files_in_dir as $key=>$val){
            $temp_file_or_dir = $path2Folder . DIRECTORY_SEPARATOR . $val;
            if(is_file($temp_file_or_dir) && !preg_match("#^\..*#", $temp_file_or_dir)){
                $arrRX                  = array('#\.{2,4}$#', '#\.#');
                $arrReplace             = array("", "_");
                $returnVal              = preg_replace($arrRX, $arrReplace, $val);
                $returnable[$returnVal] = $temp_file_or_dir;
            }else if(is_dir($temp_file_or_dir) && !preg_match('/^\..*/', $val) ){
                getFilesInFolder($temp_file_or_dir);
            }
        }
        return ($countOnly) ? count($returnable) : $returnable;
    }