我正在尝试显示存储在Web根目录之外的用户图像(出于安全目的)。我已经尝试了提出here的建议但是当我导航到show_imgs.php
时,我的浏览器返回了一堆乱码符号,似乎进入了一个无限循环。
我的代码与示例的唯一不同之处在于我的代码处于循环中。不确定这是否与它有关。
我的代码:
$image_array = ["img_1.png", "img_2.png", "img_3.png"];
$i = 1;
foreach($image_array as $image) {
//Specify absolute path
$image_path = "/absolute/path/to/img_$i.png";
//Get file contents. I have also tried readfile() in place of this.
$contents = file_get_contents($image_path);
//Perhaps this is causing the infinite loop?
header('Content-type: image/png');
//Display contents of file (aka the image)
echo $contents;
$i++;
}
当然,在使用file_get_contents
进行安全性之前,我会想要添加文件大小和mime类型验证(如果有更多安全检查我应该这样做,请说明。)
答案 0 :(得分:0)
您无法循环播放多张图片。一个php文件将输出一个标题和一个图像。你必须再次打电话才能获得另一张图片。
"通过这种方式,您可以调用如下图像:"
/image.php?file=myfile.jpg
其中images.php是包含标题和图像的php文件。
<强> images.php:强>
$file = basename(urldecode($_GET['file']));
$fileDir = '/path/to/files/';
if (file_exists($fileDir . $file)) {
// Note: You should probably do some more checks
// on the filetype, size, etc.
$contents = file_get_contents($fileDir . $file);
// Note: You should probably implement some kind
// of check on filetype
header('Content-type: image/jpeg');
echo $contents;
}
<强> my.html:强>
<img src="images.php?file=myimage.jpg" alt="">