使用PHP显示服务器上显示的图像

时间:2015-01-22 14:24:28

标签: php

我需要在服务器上的文件夹中显示网页上的图像。 我试过这个:

$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显示服务器上的图像?

1 个答案:

答案 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>";
    }
}
?>

希望这有帮助