繁体   English   中英

使用 php 在浏览器中显示图像问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM