2012-01-14 20 views
4
<?php 
class TestController extends CController 
{ 
    public function actionIndex() 
    { 
      $filename = "test.jpg"; 
      $path=Yii::getPathOfAlias('webroot.protected.images') . '/'; 
      $file=$path.$filename; 

      if (file_exists($file)) 
      { 
       $img=getimagesize($file); 
       header('Content-Type: '.$img['mime']); 
       readfile($file); 
       exit; 
      } 
    } 
    public function actionDisplayimg() 
    { 
      echo "<img src='".CController::createUrl('test/')."' />"; 
    } 
} 
?> 

test/indexやtest/displayimgに画像を表示することはできません。どんな助け?コンテンツタイプの画像を含むphpファイルで画像を表示するYii

+1

精巧なもの。生成されるものは何ですか?エラー? Imgは間違ったMIMEタイプを読みましたか?ファイルが読み込まれませんか?ファイルは '$ file'パスにありますか? '$ img' objはnullではなく、あなたが期待するものの有効なインスタンスですか? – Kissaki

+0

空白ページのみ..エラーはありません。しかし、これがif(file_exists($ file))が真であることが確認されている – iThink

+0

。 * if * ifブランチが実行された場合。しかし、あなたが言ったように、ページは空白です。 'file_exists'がfalseを返すと、ifは実行されません。私はyiiに精通していません。それは何か他のものを生成するでしょうか?または、actionIndexはすべて生成されますか?そして、elseの場合は空白のページが必要です。 – Kissaki

答えて

0

うまくビューを呼び出し、それを行動からいくつかの引数を渡すと、例えばそこ

をそれらを表示(TESTED NOT)

<?php 
class TestController extends CController 
{ 
    public function actionIndex() 
    { 
      $filename = "test.jpg"; 
      $path=Yii::getPathOfAlias('webroot.protected.images') . '/'; 
      $file=$path.$filename; 

      if (file_exists($file)) 
      { 
       $this->render('view',array(
      'filepath'=>$file, 
     )); 
    } 
} 
?> 

viewにあなたが何か

echo CHtml::image(filepath, 'image', array('class' => 'banner')); 
+0

なぜこれが下降表示されたのですか? –

+0

誰かがそれを理解しなかったので、おそらくいくつかは彼の答えを示す必要があります...... –

3
を行うことができて

readfileを呼び出す前に正しいヘッダーとコンテンツタイプを設定する必要があると思います。

public function actionIndex() 
{ 
     $filename = "test.jpg"; 
     $path=Yii::getPathOfAlias('webroot.protected.images') . '/'; 
     $file=$path.$filename; 

     if (file_exists($file)) 
     { 

       $request = Yii::app()->getRequest(); 
       $request->sendFile(basename($file),file_get_contents($file)); 
     }