1

我有一个要嵌入特定页面的 .png。这个 .png 位于 web 根目录之外,但我们的系统中有一个模块,允许用户在单独的页面上查看该图像。我发现我可以使用 iframe 在某些浏览器上查看 .png,但有时会出现授权问题,或者在尝试打印页面时图像无法通过 iframe 加载。我尝试了 PHP 的 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));?>">
4

1 回答 1

1

听起来您正在尝试将 url 传递给 readfile,例如

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

这会导致 PHP 向自身发起一个完整的 HTTP 请求。您需要使用本地文件系统路径,例如

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

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

于 2013-07-19T16:35:56.380 回答