php代码显示目录无效的图像

时间:2013-02-17 15:58:13

标签: php image

我有这个代码来显示图像,每个用户都有自己的,我会评论它来节省你的时间

    <?php
session_start();
$name=$_SESSION['valid_user']; //saved current username in variable
$loc="./uploads/";             //location of image directory
$path=$loc.$name;              //current user's folder to save his images 
echo $path."<br>";             //i used this to make sure the path is ok, only for testing

if(is_dir($path))              //if directory exists, show it exists,otherwise show it
{                              //doesnt exists
    echo "<br>exists";
} 
else 
{ 
        echo "<br>not exists"; 
}
$files = glob($path."/");
for ($i=1; $i<count($files); $i++)  
{
    $num = $files[$i];          //picture number
    print $num."<br />";
    echo '<img src="'.$path.'" alt="random image" height="100" width="100"/>'."<br /><br />";
}                           //shows the picture till the last one
?>

我得到的输出是这个

./uploads/user_name

exists

但它不会显示图像,即使文件夹不为空(上传脚本也能正常工作)。

修改;解决了它(低代表,不能回答我自己的问题)。

得到了它。对于任何关心的人,这一行

echo '<img src="' . $path . '/' . $files[$i] . '" <!-- etc --> />';

没有用,因为我添加了$文件,它已包含路径,并且它正在向img src提供输入

/uploads/username/uploads/username

这是相同路径的两倍。删除$ path,并使用

<img src="' . $files[$i] . '"

做了这个伎俩。谢谢大家的帮助。

2 个答案:

答案 0 :(得分:0)

我认为您需要将通配符路径传递给globglob($path . '/*')。您也没有在图像源属性中打印文件名:

echo '<img src="' . $path . '/' . $files[$i] . '" <!-- etc --> />';

此外,您的$num实际上是文件名,而不是图片编号 - 即$i。您可以使用foreach构造简化该循环:

foreach($files as $filename) {
  // etc
}

答案 1 :(得分:0)

你需要添加一个模式来使用glob afaik

$files = glob($path."/*.*"); // all files
$files = glob($path."/*.jpg"); // all jpgs etc.pp

foreach($files as $idx => $file)
{
    $num = $idx+1; //idx starts with 0 so we add one here
    print $num."<br />";
    echo '<img src="'.$path.'/'.$file'" alt="random image" height="100" width="100"/>'."<br /><br />";
}