使用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" />

但是,我只看到图像图标,如下所示

https://img.mukewang.com/6503fbe30001416201750100.jpg

但是在检查 FireFox - 网络响应时,我可以看到应有的完整图像,右键单击上面的图像图标,查看图像我仍然可以看到正确的图像,如下所示:

https://img.mukewang.com/6503fbef000133f001710087.jpg

我有几个,想将它们显示为 base64,然后将它们打印为 pdf。

我的问题

查看上面的代码并帮助我在浏览器中正确显示图像。先感谢您。


慕仙森
浏览 138回答 1
1回答

慕姐8265434

通过返回<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;如果你想更进一步,你还可以输出文件的 MIME:header('Content-Type: ' . mime_content_type($image));readfile($image);exit;编辑我还应该指出,在没有清理和验证的情况下将文件名作为参数传递是一个很大的安全问题,可能导致路径遍历问题。至少,我会调用basename()提供的参数,但您可能应该检查您的具体设置,看看哪些地方可能会出错,哪些不会出错。
打开App,查看更多内容
随时随地看视频慕课网APP