0

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

    <?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 --> />';

没有工作,因为我添加了已经包含路径的 $files,并且它正在向 img src 提供输入

/uploads/username/uploads/username

所以这是相同路径的两倍。删除 $path 后,只使用

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

成功了。谢谢大家的帮助。

4

2 回答 2

0

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

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

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

foreach($files as $filename) {
  // etc
}
于 2013-02-17T16:10:07.883 回答
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 />";
}
于 2013-02-17T16:12:49.660 回答