我是编程新手,现在学习php。我已经安装了xamp,并写了一点代码。我的外接高清上有一些图片,我想展示一些图片。问题是,我可以用下面的代码得到我的图像的路径列表:
echo "<html><body>";
$outerDir = "x:mapmapsmore\";
$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:mapmapsmoreneedwonder.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
这样的诡计。