0

我有一个要连接的网络服务。我的查询得到了有效的回复,其中一个是 IMAGE 类型。我没有直接控制数据库,他们也没有真正提供支持——所以我不能向他们询问具体细节。

我需要提供显示或下载此图像的链接。这应该很容易,但我已经为此努力了很长一段时间。

我有图像数据。我把它放在一个名为 $evidence 的变量中。如果我执行以下操作,我会在我使用的所有浏览器中得到一个损坏/不可读的图像(损坏的图像链接符号或类似文本):

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

因此,在调试时,我尝试使用一些复制/粘贴代码来内联显示图像:

echo '<img src="data:image/jpeg;base64,'.$evidence.'" />';

这按预期工作......图像显示正确。

但是 - 我需要能够通过标题以正确的方式执行此操作,因为我需要做其他事情,例如能够强制下载。

每次我不得不做这样的事情时,基本的“header, echo”方法总是有效的。从几乎所有教程的外观来看:这应该有效。看起来很简单,大多数教程甚至都不看显示问题(只看数据获取问题)。

4

1 回答 1

1

在思考了数据是如何传递的之后,我注意到我在图像标签中使用的代码中有“base64”部分。

我将回声修改如下:

echo base64_decode($evidence);

这解决了它。

所以!1 个简单的“陷阱”来帮助其他所有人:确保在显示之前检查了数据类型。不要以为它是二进制的!

于 2013-11-07T10:29:55.687 回答