但是文件夹中只有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>
只需检查文件扩展名。
答案 0 :(得分:0)
.
和..
从当前路径定义当前目录和父目录。 scandir
获取路径中的所有文件和文件夹,因此这些文件和文件夹也会显示为图像,因为您从不检查有效的文件扩展名(在$file_display
中定义)。要摆脱.
和..
,您可以使用
$dir_contents = array_diff(scandir($directory), array('.', '..'))