【问题标题】:Directory Listing in PHPPHP中的目录列表
【发布时间】:2018-11-24 00:52:56
【问题描述】:

我有一个 php 函数,允许我从某个目录中删除图像。现在我的问题是,在我的代码中,我可以看到列出的 index.php 文件,我只想显示它下面的图像。这是我的完整代码:

$fid= $_POST['fid'];
    if (("submit")&&($fid != "")) {
    foreach($fid as $rfn) {
    $remove = "$dir/$rfn";
    unlink($remove);
    }
    }
    $handle=opendir($dir);
    while (($file = readdir($handle))!== false){
    if ($file != "." && $file != "..") {
    $size = filesize("$dir/$file");
    $list .= '<div class="col-md-3 text-center" style="margin-top:20px;">';
    $list .= '<img src="../inc/img/galeria/'.$file.'" class="rounded" width="100%" height="250px">';
    $list .= '<br><br>';
    $list .= '<input type="checkbox" class="form-control" name="fid[]" value="'.$file.'">';
    $list .= '</div>';
    }
    }
    closedir($handle);
    echo $list;

现在这段代码工作得很好,问题是它列出了目录中的所有内容,我只想显示该目录中的 jpg、jpeg、gif 或 png 文件。在此先感谢各位。

【问题讨论】:

  • 第一个if 特征("submit") 字符串是干什么用的?
  • 我用它提交表单来删除列出的图片
  • if ("submit") 没有意义。总是正确的
  • 您说得对,我会修复并删除它,您知道如何将列表修复为特定类型吗?

标签: php directory-listing


【解决方案1】:

这是扫描目录并仅处理某些文件的方法。适应你的使用:

$handle=opendir($dir);
while ( ($file = readdir($handle)) !== false ) {
    $ext = pathinfo($file, PATHINFO_EXTENSION);
    if ( in_array($file, ['.', '..']) || ! in_array($ext, ['jpeg', 'jpg', 'gif', 'png']) ) {
        continue;
    }
    // Do something with file
}

【讨论】:

    【解决方案2】:

    您可以尝试以下方法。我希望没有语法错误。我没有运行它。

    foreach(glob($dir . "/*.{jpg,jpeg,png}", GLOB_BRACE) as $file) {
      // echo $file;
    }
    

    【讨论】:

      【解决方案3】:

      这解决了问题,谢谢大家的提示!

      $images = glob('/tmp/*.{jpeg,gif,png}', GLOB_BRACE);
      

      还有:

      // image extensions
      $extensions = array('jpg', 'jpeg', 'png', 'gif', 'bmp');
      
      // init result
      $result = array();
      
      // directory to scan
      $directory = new DirectoryIterator('/dir/to/scan/');
      
      // iterate
      foreach ($directory as $fileinfo) {
          // must be a file
          if ($fileinfo->isFile()) {
              // file extension
              $extension = strtolower(pathinfo($fileinfo->getFilename(), PATHINFO_EXTENSION));
              // check if extension match
              if (in_array($extension, $extensions)) {
                  // add to result
                  $result[] = $fileinfo->getFilename();
              }
          }
      }
      // print result
      print_r($result);
      

      这个更好,我已经成功地让它工作了,向@pirateofmarmara 大喊来指导我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-10
        • 1970-01-01
        • 1970-01-01
        • 2013-07-12
        • 1970-01-01
        • 2011-03-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多