php - 接受来自循环的文件路径并返回图像的 PHP 文件
问题描述
我正在尝试通过循环显示我的数据库中的多个图像。基本上是这样的
while loop is running{
$_SESSION['path'] = $imageURL;
echo '<img src="pic.php">';
}
我的想法是 pic php 获取路径然后显示它。然后另一个路径进来,它再次返回图像。
然而它没有。它只返回检索到的最后一个图像并重复它,直到循环完成。
所以不是显示 a.png、b.png 和 c.png。显示的是 3 c.png。
这是我的 pic.php
<?php
session_start();
$name = $_SESSION['path'];
$fp = fopen($name, 'rb');
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));
fpassthru($fp);
exit;
?>
我对这些东西特别陌生,所以如果你们检查一下,这将是一个很大的帮助!蒂亚!
解决方案
这是发生的事情:
- 您通过您喜欢的浏览器访问您的网页
- 服务器处理您的请求,并要求 PHP 创建一个包含 3
<img src="pic.php" />
- 服务器将 HTML 文件返回到您的浏览器
- 浏览器分析你的 HTML 文件,检测到它有外部资源的链接,确实有 3 次
pic.php
,所以它开始要求服务器返回这个文件的内容 - 服务器再次处理请求并要求 PHP 返回给他的内容
pic.php
- 服务端返回这个内容,HTML放了3次
最后你可以看到,即使你循环了3次,改变了3次$_SESSION['path']
,服务器在战争结束后才看到c.php
,所以它返回给浏览器。
您应该采用另一种策略来获取图像。
解决方法
解决此问题的一种方法是“按需”获取图像,如下所示:
图片.php
<?php
session_start();
$name = filter_var($_GET['q'], FILTER_SANITIZE_URL);
$fp = fopen($name, 'rb');
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));
fpassthru($fp);
exit;
?>
index.php(您访问的文件)
<?php
while loop is running{
echo "<img src='pic.php?q=$imageURL'>";
}
?>
推荐阅读
- python-3.x - Airflow Plugin - 创建自己的模型并使用气流元数据库来存储插件特定的数据
- python - pandas - 如何将嵌套字典中的数据加载到数据框中?
- javascript - 如何在javascript中向多边形添加图案?
- php - 如何修复显示 SMTP 错误的 PHPMailer 错误:无法验证。用户名和密码不被接受?
- database - 在 Cassandra 中断开节点
- android - 反应本机签名的 apk 大小为 28.7 MB
- python - 从 pandas 的列标题中删除前缀(或后缀)子字符串
- javascript - 从外部 HTML 表中获取数据到数组
- user-interface - 最后添加的Jhipster关系
- swift - 如何在 Process() 中包含命令修饰符?