如何查看Web根目录外的图像?

时间:2013-07-19 16:04:32

标签: php html iframe authorization

我想要嵌入特定页面的.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));?>">

1 个答案:

答案 0 :(得分:1)

听起来你正试图将一个url传递给readfile,例如

readfile('http://example.com/foo/bar');

这会导致PHP将一个完整的HTTP请求重新启动回自身。您需要使用本地文件系统路径,例如

readfile('/path/outside/doc/root/to/the/image.png');

这是一个纯粹的本地文件系统操作,根本不涉及HTTP层,绕过整个文档根/ http认证业务。