直接从php中的文件夹读取文件

Posted

技术标签:

【中文标题】直接从php中的文件夹读取文件【英文标题】:Reading file directly from folder in php 【发布时间】:2021-01-18 20:01:04 【问题描述】:

我希望我的代码直接从文件夹中读取文件(图像)。但是它只读取了一个文件(图像)并且仍然再次读取它(无穷大)它并没有停止显示一个相同的文件(图像)。但并非所有其他五个不同的文件(图片)。

<?php

    $dir_path = "image/gundam/";
    $extensions_array = array('jpg','png','jpeg');

    if(is_dir($dir_path))
         $files = scandir($dir_path);

         for($i = 0; $i < count($files); $i++)
             while($files[$i] !='.' && $files[$i] !='..')
                  // get file name
                  echo "File Name -> $files[$i]<br>";

                  // get file extension
                  $file = pathinfo($files[$i]);
                  $extension = $file['extension'];
                  echo "File Extension-> $extension<br>";

                  // check file extension
                  if(in_array($extension, $extensions_array))
                  // show image
                      echo "<img src='$dir_path$files[$i]' style='width:100px;height:100px;'><br>";
                  
              
          
     
 ?>

【问题讨论】:

所以你想显示该文件夹中的所有图像? 是的,我想显示文件夹中的所有图像 【参考方案1】:

要非常具体地解决您的问题,您可以使用GLOB 查找文件夹中的文件,然后将它们与您的扩展名列表进行匹配,然后显示图像。您可以使用以下代码显示给定文件夹中具有特定扩展名的所有图像。

$FILES = glob($PATH."/*.*");
for ($i=0; $i<count($FILES); $i++) 
    $fileName = $FILES[$i];
    $fileExtension = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
    if (in_array($fileExtension, $ALLOWEDTYPES)) 
        echo "<img style='margin: 10px auto' height='150' width='150' src='".$fileName ."' alt='".$fileName."' />";
     else 
        continue;
    

一般来说,您也可以像上面帖子中提到的其他用户一样使用 scandir 来实现类似的结果,以显示给定文件夹中的所有图像。

$FILES = scandir($PATH);
foreach ($FILES as $index => $imageUrl) 
    echo "<img style='margin: 10px auto' height='150' width='150' src='".$PATH."/".$imageUrl."' alt='".$imageUrl."' />";

我在这里有一个托管在 phpsandbox 上的工作示例:https://phpsandbox.io/n/lucky-pond-poov

【讨论】:

【参考方案2】:

这对我有用,我在本地测试过,你不需要 for 循环来做这个

$dir = 'var/images/';
$extensions = array('jpg', 'jpeg', 'png', 'gif');

if( false !== is_dir($dir) ) 

    $dir_contents = scandir( $dir );

    foreach($dir_contents as $images) 

        $file_ext = pathinfo($images, PATHINFO_EXTENSION);

        if( ($images !== '.') && 
            ($images !== '..') && 
            (in_array($file_ext,$extensions))

        ) 

            echo "<img src='$dir$images' style='width:100px;height:100px;'><br>";

        
    

 else 

    echo "Path is not directory";


【讨论】:

谢谢大家的帮助,我昨天刚刚试错了。唯一的问题是将while 更改为if

以上是关于直接从php中的文件夹读取文件的主要内容,如果未能解决你的问题,请参考以下文章

PHP读取大文件的几种方法介绍

从php中的csv文件读取大数据[重复]

PHP从上传的文本文件中读取?

java如何直接从流中读取excel的文件内容?Stream

php 使用SplFileObject读取CSV文件。从CSV文件定义标题或管理标题行。返回数组中的行,标题值为

用 php 读取纯文本文件