从php中的目录中获取所有文件名

时间:2012-07-12 17:32:04

标签: php

(那么我在stackoverflow和其他网站上经历了很多帖子。我需要一个简单的任务,)

我想提供我的用户工具,点击他的帐户上传文件,然后选择一个目录并获取该目录中所有文件名的列表。

根据这里的帖子,我得到的是我必须预先定义目录名称,我想避免。

有没有一种简单的方法可以点击目录并获取PHP中数组中的所有文件名?非常感谢提前!

  $dir = isset($_POST['uploadFile']) ? _SERVER['DOCUMENT_ROOT'].'/'.$_POST['uploadFile'] : null;
  if ($_POST['uploadFile'] == true) 
    {
     foreach (glob($dir."/*.mp3") as $filename) {
     echo $filename;
    }
  }

5 个答案:

答案 0 :(得分:8)

我会继续发布我目前正在使用的代码示例,并进行一些更改,但我通常会告诉您在Google上查找并首先尝试。

if ($handle = opendir($dir)) {
    while (false !== ($file = readdir($handle))) {
        echo $file;
    }
    closedir($handle);
}

这将显示目录的全部内容......包括:“。”,“..”,任何子目录和任何隐藏文件。如果不合适的话,我相信你可以想办法隐藏那些。

答案 1 :(得分:3)

<?php
$files=glob("somefolder/*.*");
print_r($files);
?>

答案 2 :(得分:1)

查看Directory班级(here)和readdir()

答案 3 :(得分:1)

我很困惑你想要什么,所有文件还是只有一些文件? 但是,如果您需要文件夹和文件的数组,请执行此操作

$folders = array();
$files = array();
$dir = opendir("path");
for($i=0;false !== ($file = readdir($dir));$i++){
  if($file != "." and $file != ".."){
    if(is_file($file)
      $files[] = $file;
    else
      $folders[] = $file;
   }
}

如果只需要一些文件夹,以后可以从数组中删除它们

答案 4 :(得分:-1)

我总是使用这个神奇的代码来获取文件列表:

$THE_PATTERN=$_SERVER["DOCUMENT_ROOT"]."/foldername/*.jpg";

$TheFilesList = @glob($THE_PATTERN);
$TheFilesTotal = @count($TheFilesList);
$TheFilesTotal = $TheFilesTotal - 1;
$TheFileTemp = "";

for ($TheFilex=0; $TheFilex<=$TheFilesTotal; $TheFilex++)
  {
    $TheFileTemp = $TheFilesList[$TheFilex];
    echo $TheFileTemp . "<br>"; // here you can get full address of files (one by one)
  }