2013-07-19 44 views
1

我有一個.png,我想在特定頁面上嵌入。這個.png位於Web根目錄之外,但我們的系統中有一個模塊,允許用戶在單獨的頁面上查看該圖像。我發現我可以使用iframe在某些瀏覽器上查看.png,但有時會出現授權問題,或者嘗試打印頁面時圖像無法通過iframe加載。我嘗試了PHP的readfile(),但後來我又遇到了另一個授權問題。我發現授權問題很奇怪,因爲必須登錄才能使用我們的網站。什麼是嵌入此圖像的最佳方式?如何查看web根目錄以外的圖像?

<?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

如果圖像文件存儲在webroot之外,那麼您使用readfile的想法將是訪問它的方式。當您嘗試使用readfile讀取圖像文件時遇到了什麼問題?您可能需要向圖像文件上的所有人授予讀取權限才能使其工作。 – mti2935

+0

我得到這個錯誤:Warning:readfile(http://www.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 –

回答

1

聽起來你試圖通過一個URL來READFILE,例如

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

這會導致PHP啓動一個完整的HTTP請求回到自己。您需要使用本地文件系統路徑,例如

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

這是一個純粹的本地文件系統的操作,並且不涉及HTTP層可言,繞過整個文檔根目錄/ HTTP認證的企業。

+0

具有完美意義。我將如何去獲得當地的道路?這是我改變它,它說它無法找到該文件。 '$ dataString =「/媒體/視圖/ ID /".$媒體 - >的getId(); echo readfile($ dataString);?> –

+0

我想要做的是訪問一個模塊,吐出一個只包含圖像的頁面,而不是直接訪問圖像 –

+0

這是我用來獲取它的代碼工作。我正在使用Symfony 1.4。 <?的PHP的foreach($活動 - > getMedias()作爲$ MEDIA_COUNT => $媒體): \t \t \t \t \t \t $ dataString = sfConfig ::得到( 'SF_ROOT_DIR') '/媒體/'。 $媒體 - >的getLocation(); ?> \t \t \t \t \t \t \t \t \t 「> \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t <?php endforeach; ?> –

相關問題