试图在和中显示PHP脚本的回显图像`<;img src="";`标签

试图在和中显示PHP脚本的回显图像`<;img src="";`标签,php,html,image,Php,Html,Image,目标是: 1) 我在web根目录外有一个images文件夹,其中放置了web应用程序中的所有图像(每个图像路径保存在DB表中) 2) 我想根据用户的请求获取该图像 很简单,对吧 我做到了: a) 创建一个类来读取图像(具有我能记住的所有安全特性和保护)。它返回(成功)带有相应mime类型的图像编码(base64) b) 出于演示目的,我创建了index.php,它具有: 这里我唯一的目标是从我的web应用程序中的任何其他位置调用一个脚本,该脚本输出具有相应mime类型的base64编码图像 c

目标是:

1) 我在web根目录外有一个images文件夹,其中放置了web应用程序中的所有图像(每个图像路径保存在DB表中)

2) 我想根据用户的请求获取该图像

很简单,对吧

我做到了:

a) 创建一个类来读取图像(具有我能记住的所有安全特性和保护)。它返回(成功)带有相应mime类型的图像编码(base64)

b) 出于演示目的,我创建了index.php,它具有:

这里我唯一的目标是从我的web应用程序中的任何其他位置调用一个脚本,该脚本输出具有相应mime类型的base64编码图像

c) 创建了一个脚本“agivenscript.php”,它通过GET接收图像名称,实例化我的类,并在一切正常时获取base64编码的图像。然后,它与图像相呼应

发生了什么:

  • 当我输出时-使用echo
    “”-在agivenscript.php中,它就像一个符咒
    
  • 此外,如果我使用$output64encodedwithmimetype内容并将字符串直接放在index.php的src标记中,它也可以工作
  • 但是,当我尝试
    时,它不起作用
由于base64编码的图像显然很好(并且具有mime类型),我缺少什么?有什么想法吗


提前感谢。

数据:
方案URL可以采用Base64编码

图像/jpeg
(或png或任何东西)的HTTP响应不能。您需要提供实际的图像数据,而不将其编码为文本


readfile
可能就是您所需要的全部。

为什么要将图像存储在web根目录之外?当访问者浏览您的网站时,服务器将有许多PHP请求需要处理,您必须自己使用适当的头来处理缓存机制(否则,您提供的图像将不会被缓存,这对带宽来说既不聪明也不好)。直接服务的图像由browserHi Pierre缓存!谢谢你的评论。是的,我同意你的看法。我正在制作代码示例,希望展示如何从web根目录外部获取文件(不仅仅是图像)。缓存现在不是一个主要问题,但我同意它在生产中是至关重要的。谢谢!我希望能够选择将图像作为对HTML请求或其他PHP脚本的响应,因此我对代码进行了简单的更改,当响应HTML请求时,我按照您的建议:直接提供图像。它起作用了。谢谢:我一直在问这个问题,不明白为什么它不起作用。