【问题标题】:PHP: Obtaining image from other PHP scriptPHP:从其他 PHP 脚本获取图像
【发布时间】:2013-06-03 16:32:32
【问题描述】:

我有一种用 php 编写的控制器 http://samplesite.com/application/getimage。它是一个简单的脚本,用一些参数响应 GET。根据这些参数,我在数据库中找到了一个图像(图像作为 BLOB 存储在那里),我将其返回如下:

header("Content-type: image/jpeg");
echo $image;

$image 是从数据库中获取的图像的 BLOB。 当我打开此 URL http://samplesite.com/application/getimage/?id=200 时,我的网络浏览器会显示一个图像。

现在我想在另一个 php 脚本的表格中显示这个图像。我想像

echo "<img src="http://mysite.com/application/getimage/?id=200" ...some params here... />";

但是 这种方法行不通。它不显示图像或产生其他问题。

我应该选择什么方法来完成这项工作?我是 php 新手,通常使用 Java EE。非常感谢。

编辑: 当然里面应该有 echo \" 而不仅仅是 ".但是我在这里写的这种方法效果很好。问题出在语法上,我有一个额外的)。

【问题讨论】:

  • 使用 return 而不是 echo 可能是第一步。
  • 您需要转义要回显的字符串中的" 语音标记,例如echo "<img src=\"http....
  • @sjmarshy:或者……不是?那是行不通的。
  • @Reshi:我的答案有效,我知道,我正在使用它。
  • @Pudge601 使用' 作为字符串分隔符可能更容易,必要时使用连接(.)。不过,我更喜欢模板方法,non-PHP code <?php echo htmlspecialchars($value); ?> non-PHP code,因为它保留了语法高亮和大纲视图的标记。从 PHP 5.4 开始,它可以毫无问题地编写为<?= htmlspecialchar($value); ?>PHP manual 也推荐它。更安全的htmlspecialchars() 具有正确的字符编码,可以使用模板引擎或 MVC 方法自动化。

标签: php html image web


【解决方案1】:

将 PHP 文件作为图像传递(不推荐)

你的问题是你没有逃过语音标记,替换:

echo "<img src="http://mysite.com/application/getimage/?id=200" ...some params here... />";

与:

echo "<img src='http://mysite.com/application/getimage/?id=200' ...some params here... />";

或:

echo "<img src=\"http://mysite.com/application/getimage/?id=200\" ...some params here... />";

但是,有一个更好的方法来做到这一点:

正确使用图像 BLOB

您走在正确的轨道上——您可以使用图像 BLOB 而不是文件来将图像内联,但还有一些工作要做。首先,您需要在传递 blob 之前 base64_encode 。您应该在传递文本而不是图像时省略标题:

echo base64_encode($image);

接下来,您需要像这样设置图像标签,声明您正在使用数据、mime 类型,最后包括 getimage 脚本的输出,如 RFC2557 声明的那样:

<img src="data:image/jpeg;base64,<?php include('http://mysite.com/application/getimage/?id=200'); ?>"/>

这应该可以解决问题。

【讨论】:

  • 个人认为后一种解决方案与他目前所做的相比没有优势。事实上,在大多数情况下,这似乎是一个非常糟糕的主意
  • 问题是当我尝试这个时 /getimage 不显示任何内容。它必须显示图像。
  • -1。绝对no 有充分的理由在此处使用不受支持的data: URI 方案。如果应用程序将原始数据打印到标准输出,您可以简单地使用应用程序 URI 作为src 属性的值。将更简单、更兼容的方法称为“不推荐”是完全无稽之谈
  • 问题显然是我在回显 ";
猜你喜欢
  • 2011-08-11
  • 2017-06-26
  • 2017-04-10
  • 2013-07-13
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
相关资源
最近更新 更多