【问题标题】:How to view an image outside of web root?如何在 Web 根目录之外查看图像?
【发布时间】:2013-07-19 00:11:07
【问题描述】:

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

【问题讨论】:

  • 如果图像文件存储在 webroot 之外,那么您使用 readfile 的想法就是访问它的方法。您在尝试使用 readfile 读取图像文件时遇到了哪些问题?您可能需要授予所有图像文件的读取权限才能使其正常工作。
  • 我收到此错误:警告:readfile(mysite.com/media/view/id/26154):打开流失败:HTTP 请求失败! HTTP/1.0 401 未经授权在 /home/user/v2/symfony/apps/front/modules/shot_report/templates/_activity_shot_report_1294​​14_1374251034_3898.php 第 396 行

标签: php html iframe authorization


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 非常有意义。我将如何获得本地路径?这就是我将其更改为的内容,它说它找不到文件。 $dataString="/media/view/id/".$media-&gt;getId(); echo readfile($dataString);?&gt;
  • 我要做的是访问一个模块,该模块会吐出一个只包含图像的页面,而不是直接访问图像
  • 这是我用来让它工作的代码。我正在使用 Symfony 1.4。 getMedias() as $media_count => $media): $dataString=sfConfig::get('sf_root_dir').'/media/'.$media->getLocation(); ?> ">
猜你喜欢
  • 2017-10-09
  • 2015-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-24
  • 2013-11-27
  • 1970-01-01
  • 2017-11-21
相关资源
最近更新 更多