无法显示来自外部高清php的图像


unable to show image from external hd php

我是编程新手,现在学习php。我已经安装了xamp,并写了一点代码。我的外接高清上有一些图片,我想展示一些图片。问题是,我可以用下面的代码得到我的图像的路径列表:

   echo "<html><body>";
   $outerDir = "x:'map'maps'more''";
   $total = count (array_diff (scandir ($outerDir), Array (".", "..")));
   $dirs = array_diff( scandir( $outerDir ), Array( ".", ".." ) ); 
   foreach ($dirs as $d) {
       if (!is_dir($outerDir . $d)) {
           echo $d . "<br>";
       }
   }

但是如果我想把它显示为图像,我不能显示图像。我在foreach中尝试了这个:

if (!is_dir($outerDir . $d)) {
    $file = $outerhDir . $d;
    echo 'img src="' . $outerDir . $d . '> <br>';
    echo "<img src='" . $outerDir . '''' . $d . "'alt='" . $d . "'> <br>";
}

但是它们都不起作用。我还尝试了header和file_get_content,如下所示:

if (!is_dir($outerDir . $d)) {
    $file = $outerDir . $d;
    header('Content-type: image/jpeg');
    header('Content-Length:' . filesize($file));
    $image = file_get_contents('$file');
    echo $image . "<br>";
}

即使是一个简单的html代码也不能工作!这样的:

echo '<img src="x:'map'maps'more'needwonder.jpg"> <br>';

BUTTTT ! !当我将其中一个图像存储在与我的php文件相同的文件夹中时,它将工作!这样的:

echo '<img src="needwonder.jpg"> <br>';

但我不想把我所有的文件在同一个文件夹的php文件,因为安全,技术上,舒适的原因,我想学习编程,而不是避免问题或问题与我的代码。

所以我希望我把我的问题定义得很好,希望你们中的一个和/或女孩知道解决方案来帮助我

如果您的图像文件不在设置为web服务器可访问的文件夹中,则无法在网页上显示它们。就是这么简单。把它们放到web目录中使用。

可以编写一个PHP脚本来代理图像文件(有点像您正在尝试的file_get_contents()),但这样做需要为图像创建一个单独的PHP文件,除非绝对必要,否则最好避免这样做,因为它很容易引入安全漏洞,并且性能很差。如果你想这样做:

  • 链接到PHP脚本的位置的图像,并传递一个标识符的图像作为参数(例如,<img src="img.php?image=blah">)。
  • 在该脚本中,使用该标识符发送适当的Content-Type,然后使用readfile()输出图像。(相当于echo file_get_contents(...),但更简洁,在某些情况下性能更好)
  • 绝对确保该脚本的参数不能被操纵来加载您不打算提供的文件。这包括像?image=../../wrong/file这样的诡计。