我想要嵌入特定页面的.png。此.png位于Web根目录之外,但我们的系统中有一个模块,允许用户在单独的页面上查看该图像。我发现我可以使用iframe在某些浏览器上查看.png,但有时存在授权问题,或者在尝试打印页面时,图片无法通过iframe加载。我试过PHPs readfile(),但后来我又遇到了另一个授权问题。我发现授权问题很奇怪,因为必须登录才能使用我们的网站。嵌入此图像的最佳方式是什么?
<?php foreach($activity->getMedias() as $media_count => $media):
<iframe id="content" src="http://www.mysite.com/media/view/id/<?php echo $media->getId(); ?>" frameborder="0" style="width: 100%; height:825px;" seamless="seamless">
<p>Your browser does not support iframes. Please upgrade to <a href="http://getfirefox.com">a modern browser</a>.</p>
</iframe>
解决 这是我用来使它工作的代码。我正在使用Symfony 1.4。
<?php foreach($activity->getMedias() as $media_count => $media):
$dataString=sfConfig::get('sf_root_dir').'/media/'.$media->getLocation(); ?>
<img SRC="data:image/png;base64,<?php echo base64_encode(file_get_contents("../../../../../..".$dataString));?>">
答案 0 :(得分:1)
听起来你正试图将一个url传递给readfile,例如
readfile('http://example.com/foo/bar');
这会导致PHP将一个完整的HTTP请求重新启动回自身。您需要使用本地文件系统路径,例如
readfile('/path/outside/doc/root/to/the/image.png');
这是一个纯粹的本地文件系统操作,根本不涉及HTTP层,绕过整个文档根/ http认证业务。