为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕仙森 2023-09-15 14:37:35
我有 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 imageecho $src;?>和 index.html 脚本 - 我用它来显示文件夹中的图像<img src="showImage.php?images=Banner7.jpg" />但是,我只看到图像图标,如下所示但是在检查 FireFox - 网络响应时,我可以看到应有的完整图像,右键单击上面的图像图标,查看图像我仍然可以看到正确的图像,如下所示:我有几个,想将它们显示为 base64,然后将它们打印为 pdf。我的问题:查看上面的代码并帮助我在浏览器中正确显示图像。先感谢您。
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

通过返回<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()提供的参数,但您可能应该检查您的具体设置,看看哪些地方可能会出错,哪些不会出错。


查看完整回答
反对 回复 2023-09-15
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号