我需要在服务器上的文件夹中显示网页上的图像。 我试过这个:
$dir = 'images';
$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) {
$file_type = strtolower(end(explode('.', $file)));
if ($file !== '.' && $file !== '..' && in_array($file_type, $file_display) == true) {
echo '<img class="photo" src="', $dir, '/', $file, '" alt="', $file, '" />';
}
}
}
它不起作用,所以我做了一些改动并尝试了这个:
$dir = 'images';
$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) {
$file_type = strtolower(end(explode('.', $file))); \\ERROR
if ($file !== '.' && $file !== '..' && in_array($file_type, $file_display) == true) {
echo '<img class="photo" src="'. $dir. '/'. $file. '" alt="'. $file. '" />';
}
}
}
但是有一个错误“只有变量应该通过引用传递”,所以我尝试了:
$dir = 'images';
$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) {
$file_type = strtolower(end(explode('.', $file)));
$tmp = explode('.', $file); \\CHANGED THIS LINE
$file_type = end($tmp); \\CHANGED THIS LINE
if ($file !== '.' && $file !== '..' && in_array($file_type, $file_display) == true) {
echo '<img class="photo" src="', $dir, '/', $file, '" alt="', $file, '" />';
}
}
}
如何动态地使用PHP显示服务器上的图像?
答案 0 :(得分:0)
在我的一个项目中,我使用RecursiveDirectoryIterator和RegexIterator来处理images目录中的多个文件夹并创建一个有效文件数组(与正则表达式匹配,在我们的案例文件中扩展名为jpg | jpeg | png | gif )
<?php
$folder = 'images';
try {
$directory = new RecursiveDirectoryIterator(realpath($folder));
$iterator = new RecursiveIteratorIterator($directory);
$files = new RegexIterator($iterator, '/^.+\.(jpg|jpeg|png|gif)$/i', RecursiveRegexIterator::GET_MATCH);
} catch (Exception $e) {
echo "Invalid Directory: ".$e->getMessage();
}
//$files is an array with file name of all the valid images
if(isset($files) && $files != null){
foreach($files as $filepath => $value){
echo "<img src='".$filepath."'><br>";
}
}
?>
希望这有帮助