从文件夹动态加载图像时,会出现两个带点的图像

时间:2018-02-05 05:52:52

标签: php html image

我尝试从本地服务器上的文件夹加载图像。 Image

但是文件夹中只有3张图片正确显示。

<table class="table">
    <?php 
    $dir  = '../images/slideshow';
    $file_display = array('jpg', 'jpeg', 'png', 'gif');

    if (file_exists($dir) == false) {
        echo 'Directory \''. $dir. '\' not found!';
    } else {
        $dir_contents = scandir($dir);

        foreach ($dir_contents as $file) {
            $ex = explode('.', $file);
            $file_type = strtolower(end($ex));

            ?>
            <tr>
            <td><img alt="<?php echo $file?>" width="64px" height="64px" src="<?php echo $dir."/".$file?>">
            <td class="td" style="text-align: center;"><a href="<?php echo $_SERVER['PHP_SELF']."?action=delete&id=".$row["id"]; ?>" class="btn btn-default btn-danger" >Delete</a><?php
        }
    }
    ?>
</table>

编辑: 我能够通过将上面的代码改为以下代码来解决这个问题......

<table class="table">
    <?php 
    $dir  = '../images/slideshow';
    $file_display = array('jpg', 'jpeg', 'png', 'gif');

    if (file_exists($dir) == false) {
        echo 'Directory \''. $dir. '\' not found!';
    } else {
        $dir_contents = scandir($dir);
        $file_display = array(
                'jpg',
                'jpeg',
                'png',
                'gif'
        );

        foreach ($dir_contents as $file) {
            $ex = explode('.', $file);
            $file_type = strtolower(end($ex));
            if ($file !== '.' && $file !== '..' && in_array($file_type, $file_display) == true) {
                ?>
                <tr>
                <td><img alt="<?php echo $file?>" width="64px" height="64px" src="<?php echo $dir."/".$file?>">
                <td class="td" style="text-align: center;"><a href="<?php echo $_SERVER['PHP_SELF']."?action=delete&id=".$row["id"]; ?>" class="btn btn-default btn-danger" >Delete</a><?php
            }
        }
    }
    ?>
</table>

只需检查文件扩展名。

1 个答案:

答案 0 :(得分:0)

...从当前路径定义当前目录和父目录。 scandir获取路径中的所有文件和文件夹,因此这些文件和文件夹也会显示为图像,因为您从不检查有效的文件扩展名(在$file_display中定义)。要摆脱...,您可以使用

$dir_contents = array_diff(scandir($directory), array('.', '..'))