[英]Image display in the Browser issue using php
我有 2 个脚本 - imageDisplay.php
<?php
$image = 'images/Banner7.jpg';
// Read image path, convert to base64 encoding
$imageData = base64_encode(file_get_contents($image));
// Format the image SRC: data:{mime};base64,{data};
$src = 'data:image/jpeg;base64,'.$imageData;
// Echo out a sample image
echo $src;
?>
和 index.html 脚本 - 我用来显示文件夹中的图像
<img src="showImage.php?images=Banner7.jpg" />
但是,我只看到如下所示的图像图标
但是在检查 FireFox - 网络响应时,我可以看到完整的图像,然后右键单击上面的图像图标,查看图像我仍然可以看到正确的图像,如下所示:
我有几个,想将它们显示为 base64,然后在 pdf 上打印它们。
我的问题:
查看上面的代码并帮助我在浏览器中正确显示图像。 先感谢您。
通过返回一个<img>
标记,您基本上是将一个<img>
标记回显到一个<img>
标记的src
属性中,该属性实际上如下所示:
<img src="<img src="data:image/jpeg;base64">">
在您的showImage
脚本中,没有理由对 base64 进行任何编码,仅当您使用 HTML 等基于文本的传输时才需要。 由于您通过支持二进制的 HTTP 传输,因此您可以只发送文件。 有几种方法,但最简单的是:
echo file_get_contents($image);
exit;
对于较大的文件,另一个性能更高的选项是:
readfile($image);
exit;
如果你想更高级一点,你也可以 output 文件的 MIME:
header('Content-Type: ' . mime_content_type($image));
readfile($image);
exit;
编辑
我还应该指出,将文件名作为参数传递而不进行清理和验证是一个很大的安全问题,可能导致路径遍历问题。 至少,我会在提供的参数上调用basename()
,但您可能应该查看您的特定设置以查看 go 可能或不能出错的地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.